Makine Öğrenmesi - II. Doğrusal Olmayan İlişkiler (Non-Linear Relationships)

Rastgele Ormanlar (Random Forest)

Yayın tarihi :10-Oca-22
Bölüm kodlarını ve/veya veri setlerini indir.

Rastgele Ormanlar (Random Forest), karar ağacı algoritmalarından oluşturulan denetimli bir makine öğrenmesi algoritmasıdır. Torbalama yöntemiyle eğitilmiş birçok karar ağacı algoritmasından oluşur. Ormandaki daha fazla ağaç olması daha doğru sonuçlar elde edilmesini sağlar. 

Hem regresyon işlemlerinde hem de sınıflandırma işlemlerinde kullanılabilir.

Kullanabilmek için "RandomForestRegressor" kütüphanesinin içe aktarılması gerekmektedir.

from sklearn.ensemble import RandomForestRegressor

Söz dizimi: RandomForestRegressor(n_estimators=100, *, criterion='squared_error', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_nodes=None, min_impurity_decrease=0.0, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, ccp_alpha=0.0, max_samples=None)

  • n_estimators, ormandaki ağaç sayınını temsil eder, varsayılan olarak 100'dür.
  • criterion, bölünmenin kalitesini belirleme işlemidir. 3 farklı değer alabilir, "squared_error", "absolute_error", "poisson", varsayılan olarak squared_error değerini kullanır. squared_error: varyans azaltımı için, absolute_error: ortalama mutlak hata, poisson: bölmeleri bulmak için kullanılırlar.
  • max_depth, maksimum ağaç derinliğini temsil eder. Sayısal değerler alır.
  • max_features, en iyi bölünmeyi ararken göz önünde bulundurulması gereken özelliklerin sayısını temsil eder. 3 farklı değer alabilir, “auto”, “sqrt”, “log2”. Varsayılan olarak auto'dur. auto ise max_features=n_features, sqrt ise max_features=sqrt(n_features) ve log2 ise de max_features=log2(n_features).

Örnek-1: Regresyon işlemi için veri seti oluşturalım ve "RandomForestRegressor" regresyon modeli kullanalarak tahminleme işlemi yapalım.

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
import warnings
warnings.filterwarnings("ignore")

from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error,r2_score,mean_absolute_error

from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import make_regression
#100 satırlık 5 sütunluk x değeri ve 1 sütunluk y (hedef) değeri.
x,y=make_regression(n_samples=100,n_features=5,n_targets=1)
print("1. satır x değerleri: {}".format(x[0:1]))
print("1. satır y değeri {}".format(y[0:1]))

Çıktı:

1. satır x değerleri: [[-0.22257123 -0.06688162 -1.20629258 -0.15258991  0.01599756]]
1. satır y değeri [-73.18477856]
#Train ve test işlemlerinde kullanılacak değerleri ayıralım
x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=13,test_size=.2)
x_train.shape,x_test.shape,y_train.shape,y_test.shape

Çıktı:

((80, 5), (20, 5), (80,), (20,))
RF=RandomForestRegressor()
#Öğrenme işlemi
RF.fit(x_train,y_train)
#Karar ağaçları listesi(n_estimators=200) toplamda 200 olarak seçilmişti, ilk 4 satır listelendi.
RF.estimators_[0:4]

Çıktı:

[DecisionTreeRegressor(max_features='auto', random_state=1269132927),
 DecisionTreeRegressor(max_features='auto', random_state=1147526673),
 DecisionTreeRegressor(max_features='auto', random_state=1998064887),
 DecisionTreeRegressor(max_features='auto', random_state=1615414526)]
#Tahminleme işlemi
predict_RF=RF.predict(x_test)
#Doğruluk yüzdesi
r2_score(y_test,predict_RF)*100

Çıktı:

87.14984477183495
Paylaş:

Yorum Yap (*Yorumunuza kod eklemek isterseniz Kod Parçacığı Ekle butonuna tıklayarak ekleyebilirsiniz.)

Yorumlar

Henüz hiç yorum yapılmamış, ilk yorum yapan sen ol.