Makine Öğrenmesi - Sınıflandırma Algoritmaları

Random Forest Classifier

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

Random Forest (Rastgele Ormanlar), 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.

Sınıflandırma algoritması olarak kullanabilmek için "RandomForestClassifier" kütüphanesinin içe aktarılması gerekmektedir.

from sklearn.ensemble import RandomForestClassifier

Söz dizimi: RandomForestClassifier(n_estimators=100, *, criterion='gini', 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, class_weight=None, ccp_alpha=0.0, max_samples=None)

  • n_estimators, ormandaki ağaç sayınını temsil eder, varsayılan olarak 100'dür.
  • criterion, bir bölünmenin kalitesini ölçme işlevini temsil eder. 2 farklı değer alabilir: "gini", "entropy". Varsayılan olarak "gini" değerini alır.
    • gini, safsızlığı temsil eder.
    • entropy, bilgi kazancını temsil eder.
  • 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, max_features=n_features,
    • sqrt, max_features=sqrt(n_features)
    • log2, de max_features=log2(n_features).

Örnek-1: Rasgele olarak sınıflandırma için veri seti oluşturalım(make_classification kütüphanesi ile) ve RandomForestClassifier 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 accuracy_score,precision_score,recall_score,f1_score
from sklearn.metrics import confusion_matrix,classification_report

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
#1000 satırlık 10 sütunluk x değeri ve 1 sütunluk y (hedef) değeri.
x,y=make_classification(n_samples=1000,n_features=10)
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.71755029  0.47605473  1.64020509  0.37168963  0.92120077 -0.59775861
  -1.57939746 -0.43825229  0.89599757  0.83890191]]
1. satır y değeri [0]
#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ı:

((800, 10), (200, 10), (800,), (200,))
#RandomForestClassifier ataması yapılır
RF=RandomForestClassifier()

#Model eğitme işlemi
RF.fit(x_train,y_train)
#Karar ağaçları listesi(default değeri:n_estimators=100) 100 olarak seçilmişti, ilk 4 satır listelendi.
RF.estimators_[0:4]

Çıktı:

[DecisionTreeClassifier(max_features='auto', random_state=1624006193),
 DecisionTreeClassifier(max_features='auto', random_state=875100123),
 DecisionTreeClassifier(max_features='auto', random_state=191961540),
 DecisionTreeClassifier(max_features='auto', random_state=2102790160)]
#x_test verilerini tahminleme işlemi
predict_RF=RF.predict(x_test)
confusion_matrix(y_test,predict_RF)

Çıktı:

array([[106,   3],
       [  5,  86]], dtype=int64)
#confusion_matrix değerlerinin grafikselleştirmesi
sns.heatmap(confusion_matrix(y_test,predict_RF),annot=True,linewidths=2)

Çıktı:

#Sınıflandırma raporu
print(classification_report(y_test,predict_RF))

Çıktı:

              precision    recall  f1-score   support

           0       0.95      0.97      0.96       109
           1       0.97      0.95      0.96        91

    accuracy                           0.96       200
   macro avg       0.96      0.96      0.96       200
weighted avg       0.96      0.96      0.96       200

Sınıflandırma raporunda da görüldüğü gibi RandomForestClassifier algoritması ile girilen değerlere göre hedef sütununda bulunan  değerleri doğru tahmin etme yüzdesi: accuracy değeri göz önüne alınırsa %96 olarak bulundu.

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.