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.

Random Forest Regresyon: Python Örnek Uygulaması” için 2 yorum

  • 18 Aralık 2017 tarihinde, saat 23:24
    Permalink

    cok tesekkurler cok faydali bir site

    Yanıtla
  • 17 Mart 2018 tarihinde, saat 17:30
    Permalink

    Güzel bir yazı teşekkür ederim

    Yanıtla

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir