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.

Yazar Hakkında
Toplam 180 yazı
Erkan ŞİRİN
Erkan ŞİRİN
10 yılı aşkın süredir yurtiçi ve yurtdışında sektörde büyük veri mühendisliği, platform yönetimi ve makine öğrenmesi ile ilgili çalışmalar yürütmekte ve aynı zamanda birçok kurum ve şirkete danışmanlık ve eğitimler vermektedir. Çalışma alanları: Data ve MLOps platformları, gerçek zamanlı veri işleme, değişen veriyi yakalama (CDC) ve Lakehouse.
Yorumlar (2 yorum)
kaan
kaan Yanıtla
- 23:24

cok tesekkurler cok faydali bir site

Ahmet Öz
Ahmet Öz Yanıtla
- 17:30

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

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara