Random Forest Regresyon: Python Örnek Uygulaması
Random forest regresyon birden fazla karar ağacını kullanarak daha uyumlu modeller üreterek isabetli tahminlerde bulunmaya yarayan bir regresyon modelidir. Karar ağaçlarını kullandığı için kesiklidir. Yani belli bir aralıkta istenen tahminler için aynı sonuçları üretir. Bu yazımızda Python ile basit bir random forest regresyonu uygulaması yapacağız.
Kütüphaneleri İndirme, Çalışma Diznini Ayarlama ve Veri Setini İndirme
Veriyi buradan indirebilirsiniz.
import numpy as np import matplotlib.pyplot as plt import pandas as pd import os os.chdir('Sizin_Calisma_Dizniniz') dataset = pd.read_csv('PozisyonSeviyeMaas.csv')
Veriyi Anlamak
Yukarıdaki tabloda niteliklerimizi görüyoruz:
Pozisyon: İş Ünvanı. Nitelik türü kategorik.
Seviye: İş ünvanlarını birbiri arasında maaş, astlık-üstlük vb. sıralayan nitelik. Nitelik türü nümerik.
Maas: Her bir pozisyondaki personelin yıllık maaşı. Nitelik türü nümerik.
Bu veri seti ve kuracağımız random forest model ile çözmeye çalışacağımız problem seviyesine göre bir personelin maaşını tahmin etmek olacak. Böylelikle y hedef değişkenimizin Maas, bağımsız değişken Seviye olduğunu çıkarabiliyoruz. Pozisyon seviye ile yakından ilgili bir nitelik ve seviyenin adlandırması gibi bir fonksiyonu olduğu için bu niteliği veri setinden çıkarıyoruz.
Veri seti çok az bir kayıttan (10 adet) oluştuğu için eğitim ve test olarak ayırmıyoruz.
Bağımlı ve Bağımsız Değişkenleri Oluşturmak
X = dataset.iloc[:, 1:2].values y = dataset.iloc[:, 2].values
Random Forest Regresyon ile Modeli Eğitmek
Random Forest Regresyon, scikit-learn
kütüphanesi ensemble
modülünün bir sınıfı olarak tanımlanmış. Sınıfımız RandomForestRegressor
. Bu sınıftan yaratacağımız nesne, yani regressor
, makine işimizi yapacak. Modelimizi eğitmek için öncelikle bu sınıftan regressor
adında bir nesne yaratıyoruz. Daha sonra bu nesnenin fit()
metoduna X, y
değişkenlerimizi parametre olarak veriyoruz. Böylelikle makinemizi kurmuş oluyoruz.
from sklearn.ensemble import RandomForestRegressor regressor = RandomForestRegressor(n_estimators=10, random_state=0)
burada kullandığımız n_estimator
parametresi kaç tana karar ağacı kullanılacağı ile ilgili, varsayılan değer olan 10’u seçiyoruz, random_state
parametresi sınıfın aldığı birçok parametreden yalnızca birisi. Diğer parametreler varsayılan değer olarak dahil oluyor. Makinemizi eğitelim.
regressor.fit(X, y)
Grafik çizelim ve model uyumuna gözle bakalım:
X_grid = np.arange(min(X), max(X), 0.01) X_grid = X_grid.reshape((len(X_grid), 1)) plt.scatter(X, y, color = 'red') plt.plot(X_grid, regressor.predict(X_grid), color = 'blue') plt.title('Random Forest Regresyon') plt.xlabel('Pozisyon Seviye') plt.ylabel('Maas') plt.show()
Grafiğimiz karar ağacı regresyon grafiğine çok benziyor. Buradaki fark daha fazla aralıkların bulunması. Şimdi bir tahmin yapalım:
y_pred = regressor.predict(6.5) y_pred
Sonuç: 167.000 ile gayet makul bir tahmin. Peki biz bu ormanı 10 ağaçtan kurmuştuk. Bunu 100 ağaca çıkarıp bir daha deneyelim. Yapmamız gereken sadece regressor nesnesini oluştururken n_estimators parametresine 100 değerini vermek.
Bir önceki grafiğe göre daha fazla aralık var. Şimdi tekrar tahmin yapalım.
y_pred = regressor.predict(6.5) y_pred
Sonuç: 158.300 gibi bir rakam üretti. n_estimators
parametresini daha da arttırarak sonucu gözlemleyebiliriz.
cok tesekkurler cok faydali bir site
Güzel bir yazı teşekkür ederim