Giriş: Neden Boston Housing Dataset?
Boston Housing dataset, veri bilimi ve makine öğrenimi alanında sıkça kullanılan klasik bir veri kümesidir. Bu veri seti, 1970’lerde mevcut olan Boston şehrindeki konut fiyatları hakkında bilgiler içerir. Eğitim amaçlı olarak kullanılması, makine öğrenimi algoritmalarını anlamak ve uygulamak isteyenler için büyük bir fırsat sunar. İçerdiği 506 örnek ile çeşitli özellikler üzerinden konut fiyatlarını tahmin etme imkanı verir.
Bu makalede, Python ile doğrusal regresyon kullanarak Boston Housing datasetini analiz edeceğiz. Veri kümesinin özelliklerini inceleyecek, veriyi nasıl hazırlayacağımızı öğrenerek modelimizi oluşturacağız. Ayrıca modelimizin doğruluğunu değerlendirecek ve sonuçları görselleştireceğiz. Eğer makine öğrenimi alanında yeniyseniz, bu yazı size temel bir anlayış kazandıracak ve kendi projelerinizde uygulayabileceğiniz bir örnek sağlamak amacıyla hazırlandı.
Veri bilimi projelerinde başarılı olmak için veri ön işleme süreci kritik bir rol oynar. Bu nedenle, veri kümesini nasıl analiz edeceğimiz ve hangi adımları takip edeceğimiz konusunda ayrıntılı bilgiler sunacağız. Hazırsanız, başlayalım!
Boston Housing Dataset’ini Anlamak
Boston Housing dataset, 13 adet bağımsız değişken ve bir bağımlı değişken içermektedir. Bağımsız değişkenler; konutun bulunduğu bölgenin demografik bilgileri, ortalama odalar, suç oranı gibi çeşitli özelliklerdir. Bağımlı değişken ise konutun medyan satış fiyatını temsil eder. Bu özellikler arasındaki ilişkiyi anlamak, doğru bir model oluşturmak için hayati öneme sahiptir. Örneğin, ‘CRIM’ değişkeni suç oranını ifade ederken; ‘RM’ değişkeni konutta bulunan ortalama oda sayısını gösterir.
Veri setine genel bakış için pandas kütüphanesini kullanarak veriyi yükleyecek ve içeriği gözlemleyeceğiz. Aşağıda bu işlemi basit bir şekilde göreceksiniz:
import pandas as pd
boston_data = pd.read_csv('boston_housing.csv')
print(boston_data.head())
Bu komut, veri setinin ilk beş satırını ekrana yazdıracak ve veri yapısı hakkında bir ön bilgi verecektir. Veri setini analiz ederken, hangi sütunların önemli olduğunu belirlemek için açıklayıcı istatistikler ve veri görselleştirmeleri kullanacağız.
Veri Ön İşleme Aşamaları
Doğrusal regresyon modelini oluşturmak için, doğru ve temiz bir veri setine ihtiyacımız bulunmaktadır. İlk olarak, eksik değerleri kontrol edeceğiz. Eğer veri setinde eksik değerler mevcutsa, bunları ya kaldırmalı ya da uygun bir değer ile doldurmalıyız. Pandas kütüphanesi, bu tür işlemler için oldukça kullanışlıdır:
missing_values = boston_data.isnull().sum()
Yukarıdaki kodu kullanarak, her bir değişkende bulunan eksik değerlerin sayısını görebiliriz. Eğer eksik değerler bulursak, bunları silmek için:
boston_data.dropna(inplace=True)
Kayıtları silerek eksik değerleri ortadan kaldırdık. Bir diğer önemli adım ise veri normalizasyonudur. Veriler farklı ölçeklerde olabilir; bu nedenle, verilerinizi normalleştirmek, modelin daha iyi performans göstermesini sağlar. Özellikle, ‘MEDV’ (mede fiyatı) değerleri genellikle daha büyük sayılar içermektedir. Bu nedenle, normalizasyon işlemi aşağıdaki gibi yapılabilir:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
boston_data_normalized = scaler.fit_transform(boston_data)
Veri ön işleme aşamalarını tamamladıktan sonra modelimizi oluşturmaya geçebiliriz.
Doğrusal Regresyon Modeli Oluşturma
Pandas ve sklearn kütüphanesini kullanarak doğrusal regresyon modelini oluşturacağız. Model, bağımsız değişkenleri (özellikleri) kullanarak bağımlı değişkeni (medyan ev fiyatı) tahmin edecektir. İlk önce verimizi eğitim ve test veri setine ayıracağız:
from sklearn.model_selection import train_test_split
X = boston_data_normalized[:, :-1] # tüm değişkenler, son sütun hariç
y = boston_data_normalized[:, -1] # son sütun
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Yukarıdaki kodda, %80 eğitim ve %20 test verisi olarak ayırdık. Şimdi, doğrusal regresyon modelimizi oluşturalım:
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
Modelimizi fit ettikten sonra, tahminleme işlemini gerçekleştirebiliriz. Test verisinde tahminler yaparak sonuçları değerlendireceğiz:
y_pred = model.predict(X_test)
Artık tahmin edilen medyan ev fiyatlarını gerçek verilerle karşılaştırarak modelimizin başarısını değerlendirebiliriz.
Modelin Değerlendirilmesi
Modelimizin başarısını ölçmek için çeşitli metrikler kullanabiliriz. En yaygın metriklerden biri ortalama kare hata (MSE) ve R^2 değeridir. MSE, tahminimizin ne kadar iyi olduğunu göstermektedir. R^2 ise 0 ile 1 arasında bir değere sahip olup, modelin verileri ne kadar iyi açıkladığını 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)
Sonuçlarımızı ekrana yazdıralım:
print('Ortalama Kare Hata:', mse)
print('R^2 Değeri:', r2)
Bu metrikler modelimizin ne kadar başarılı olduğunu anlamamıza yardımcı olacaktır. Düşük bir MSE ve yüksek bir R^2 değeri, modelimizin iyi çalıştığını gösterir.
Sonuçların Görselleştirilmesi
Sonuçlarımızı daha iyi anlamak için görselleştirme araçlarını kullanarak tahminlerimizi grafik üzerinde gösterebiliriz. Örneğin, tahmin edilen ve gerçek medyan ev fiyatlarını karşılaştırmak için bir dağılım grafiği çizebiliriz. Matplotlib kütüphanesini kullanarak aşağıdaki gibi bir grafik oluşturalım:
import matplotlib.pyplot as plt
plt.scatter(y_test, y_pred)
plt.xlabel('Gerçek Değerler')
plt.ylabel('Tahmin Edilen Değerler')
plt.title('Gerçek ve Tahmin Edilen Değerler Karşılaştırması')
plt.plot([min(y_test), max(y_test)], [min(y_test), max(y_test)], color='red', linestyle='--')
plt.show()
Yukarıdaki grafik, tahmin edilen değerlerin gerçek değerler ile olan ilişkisini gösterir. Elde edilen sonuçlarla birlikte doğru bir model geliştirdiğimizi kanıtlar.
Özet ve İleri Adımlar
Bu yazı boyunca Boston Housing datasetini kullanarak Python ile doğrusal regresyon modelimizi oluşturduk. Veri setini inceledik, ön işleme aşamalarını tamamladık, modelimizi geliştirdik ve sonuçlarımızı değerlendirdik. Veri bilimi projelerinde verinin etiği ve doğruluğu büyük önem taşırken, modelin nasıl geliştirileceğini anlamak gelecekteki projelerinizde oldukça faydalı olacaktır.
Bir sonraki adım olarak, farklı makine öğrenimi algoritları üzerinde denemeler yapabilir, model performansını artırmak için hiperparametre optimizasyonlarını inceleyebilir ve daha karmaşık özellik mühendislik tekniklerine yönelebilirsiniz. Veriyi farklı perspektiflerden incelemek, daha fazla bilgi edinmenizi sağlayacak ve yeteneklerinizi geliştirecektir.
Unutmayın ki bir veri bilimcisinin en değerli özelliği sürekli öğrenme ve deneme isteğidir. Python’da veri analizi ve makine öğrenimi konularındaki yolculuğunuzda bol şans!