Giriş: Boston Dataset Nedir?
Boston Dataset, özellikle makine öğrenmesi alanında sıklıkla kullanılan bir veri kümesidir. Bu veri seti, Boston bölgesindeki konutların fiyat tahminleri üzerinde çalışmak için derlenmiştir ve 1978 yılında Harrison ve Rubinfeld tarafından oluşturulan çalışmaya dayanmaktadır. Veri seti, konut fiyatlarını etkileyen çeşitli faktörleri içermektedir; bu nedenle, hem veri bilimi hem de istatistik alanında önemli bir kaynak olarak değerlendirilmektedir.
Dataset, 506 konut örneği ve her bir konutun 13 bağımsız değişkeni ile birlikte gelmektedir. Bu bağımsız değişkenler arasında, konutun yaşı, odaların sayısı, uzaklık gibi çeşitli faktörler yer almaktadır. Ayrıca, bu veri seti, pyton üzerinde eğitim yaparken, veri analizi ve modelleme tekniklerini öğretmek için harika bir örnek teşkil eder.
Bu yazıda, Boston Datasetini Python kullanarak nasıl analiz edeceğimizi ve bununla çeşitli makine öğrenmesi modelleri geliştireceğimizi inceleyeceğiz. Amacımız, veri setinin içindeki özellikleri anlamak ve sonuçlarını yorumlamaktır.
Boston Dataset’i Python ile Yükleme
Veri setini Python’da kullanmak için birinci adım, gerekli kütüphaneleri yüklemektir. Veri analizi için en çok tercih edilen kütüphaneler arasında Pandas, NumPy ve matplotlib bulunmaktadır. Bu kütüphaneleri yükledikten sonra datasetimizi içe aktarabiliriz.
Pandas kütüphanesi, veri yapıları ve veri analizi için oldukça güçlü bir araçtır. NumPy, sayısal hesaplamalar için kullanılırken, matplotlib veri görselleştirmeleri için kullanışlı bir kütüphanedir. JSON formatında bir Python kodu şöyle görünebilir:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Boston veri setini içe aktaralım
df = pd.read_csv('https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.csv', header=None)
df.columns = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
Burada, veri setinin URL’si üzerinden doğrudan Pandas ile yüklenmiştir. ‘header=None’ parametresi ile ilk satırın başlık olarak alınmaması sağlanır ve ardından bir dizi anlamlı isimle veri çerçevesinin sütunları adlandırılır.
Veri Setinin Analizi ve Temel İstatistikler
Veri setimiz yüklendikten sonra, içeriğini incelememiz gerekir. Bunun için en temel istatistiksel bilgileri elde etmek için bazı basit betikler yazabiliriz. Pandas, bu tür işlemler için kullanışlı işlevler sunar.
Aşağıdaki kod, veri çerçevesinin ilk beş satırını ve temel istatistiklerini gözlemlemek için kullanılabilir:
print(df.head())
print(df.describe())
‘head()’ işlevi, veri çerçevesinin ilk beş satırını döndürürken, ‘describe()’ işlevi, her bir sayısal değişken için temel istatistiksel bilgileri (ortalama, standart sapma, minimum, maksimum, çeyrekler) sağlayacaktır. Bu bilgileri dikkatlice analiz ederek, hangi değişkenlerin konut fiyatları ile ilişkili olduğunu daha iyi anlayabiliriz.
Veri Görselleştirme
Görselleştirme, verinin daha iyi anlaşılmasını sağlayan önemli bir adımdır. Matplotlib veya Seaborn kullanarak, veri setinin içindeki ilişkileri ortaya koyabiliriz. Örneğin, konut fiyatlarının (MEDV) odaların sayısına (RM) göre nasıl dağıldığını görmek faydalı olacaktır.
Aşağıdaki kod ile bu ilişkiyi görselleştirebiliriz:
plt.scatter(df['RM'], df['MEDV'])
plt.title('Oda Sayısına Göre Konut Fiyatları')
plt.xlabel('Odalar')
plt.ylabel('Konut Fiyatı (MEDV)')
plt.show()
Bu grafik, odaların sayısı ile konut fiyatları arasındaki ilişkiyi açıkça göstermektedir. Genellikle daha fazla oda, daha yüksek bir konut fiyatı ile ilişkilendirilmektedir. Böylece veri setinin görsel analizi, model tasarımında yönlendirmeler yapmamıza yardım eder.
Model Geliştirme: Regresyon Analizi
Şimdi, Boston Dataset üzerinde regresyon analizi yaparak konut fiyatlarını tahmin eden bir model geliştireceğiz. Scikit-learn kütüphanesi, makine öğrenmesi alanında en yaygın kullanılan araçlardan biridir ve doğrusal regresyon modelimizi bu kütüphane ile gerçekleştireceğiz.
Regresyon modeli kurmadan önce, veri setimizi eğitim ve test setlerine ayırmalıyız. Bu, modelin doğruluğunu test etmek için kritik bir adımdır. Aşağıdaki kod ile verimizi ayırabiliriz:
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
X = df.drop('MEDV', axis=1)
y = df['MEDV']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Burada, ‘train_test_split’ işlevi, verimizi %80 eğitim ve %20 test olarak ayırır. Bu işlev sayesinde modelimizin gerçekte nasıl performans gösterdiğini anlayabiliriz.
Modeli Eğitmek ve Sonuçları Değerlendirmek
Ayrılan eğitim seti ile modelimizi eğitebiliriz. Aşağıdaki kod, doğrusal regresyon modelimizi eğitmek ve ardından test seti üzerinde sonuçları değerlendirmek için kullanılabilir:
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
Model eğitildikten sonra, tahmin edilen sonuçları gerçek değerlerle karşılaştırmalıyız. Burada en yaygın kullanılan metriklerden biri R² (R-kare) değeridir. Bu değer, modelimizin ne kadar iyi tahmin yapabildiğini gösterir.
from sklearn.metrics import mean_squared_error, r2_score
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print('MSE:', mse)
print('R²:', r2)
Elde ettiğimiz MSE (ortalama kare hata) ve R² değerleri, modelimizin performansını değerlendirmek için önemli gösterge niteliğindedir.
Sonuçlar ve Gelecek Çalışmalar
Sonuç olarak, Boston veri seti kullanarak Python ile veri analizi ve modelleme süreçlerini baştan sona ele almış olduk. Veri seti içindeki faktörleri anlamak ve konut fiyatlarını tahmin etmek için gereken adımları inceledik. Bu çalışmanın, veri bilimi ve makine öğrenmesi konularında yeni başlayanlar için öğretici bir kaynak olmasını umuyoruz.
Bundan sonraki aşamalarda, daha karmaşık modeller deneyebilir, farklı yaklaşım ve algoritmalarla sonuçları karşılaştırabiliriz. Örneğin, Random Forest, destek vektör makineleri ya da derin öğrenme yöntemleri kullanarak tahminlerimizi daha da geliştirebiliriz. Ayrıca, hyperparameter tuning gibi tekniklerle model performansını artırmayı deneyebiliriz.
Veri bilimi dalında devam eden öğrenimlerinizi daha da derinleştirerek, bu tür temel veri setleri üzerinde farklı gezintilere çıkmanız faydalı olacaktır. Python ile deneylerinizi geliştirmeye devam edin, öğrendiklerinizle yeni projeler üretmek için kendinizi motive edin!