Python ile Random Forest Sınıflandırıcısını Kullanma

Random Forest Nedir?

Random Forest, gözetimli öğrenme algoritmaları arasında yer alan güçlü bir makine öğrenmesi tekniğidir. Temel olarak, birden fazla karar ağacının bir araya gelerek oluşturduğu bir ansamble modelidir. Her bir karar ağacı, verinin farklı alt kümesi üzerinde bağımsız olarak eğitilir. Sonuç, bu ağaçların çıktılarının birleştirilmesiyle oluşturulur. Özellikle karmaşık veri setleri üzerinde oldukça etkili olan bu yöntem, overfitting (aşırı uyum sağlama) riskini azaltma özelliği ile dikkat çeker.

Random Forest, veri sınıflandırma ve regresyon problemlerinde sıklıkla tercih edilmektedir. Bir çok farklı alanda kullanımı mümkün olan bu model, aynı zamanda, özellikle özelliklerin yüksek boyutlu olduğu durumlarda da üstün performans sunar. Bu yazıda, Python programlama dilinde Random Forest sınıflandırıcısını nasıl kullanabileceğinizi adım adım inceleyeceğiz.

Random Forest modelinin ana avantajları arasında kolay uygulanabilirliği, sağlamlığı ve yüksek doğruluk payı yer almaktadır. Bunun yanı sıra, veri setindeki özelliklerin önem derecelerini değerlendirme imkanı sunar. Bu özellikleri sayesinde, modellerin daha belirgin ve anlaşılır hale gelmesine katkıda bulunur.

Python’da Random Forest Sınıflandırıcısını Kullanmak İçin Gerekli Kütüphaneler

Python’da Random Forest modelini uygulamak için öncelikle bazı kütüphanelere ihtiyacımız var. En yaygın kullanılan kütüphaneler arasında scikit-learn, pandas ve numpy yer alır. Scikit-learn, makine öğrenmesi için geniş bir algoritma yelpazesine sahip bir kütüphanedir ve Random Forest dahil birçok modelin uygulanmasını kolaylaştırır.

Pandas kütüphanesi, veri manipülasyonu ve analizi için oldukça kullanışlıdır. Verilerin ön işlenmesi, eksik değerlerin kontrolü gibi adımlarda pandas’tan faydalanacağız. Numpy ise, sayılara dayalı hesaplamaları hızlandırmak için kullanılan bir kütüphanedir. Gerekli kütüphaneleri yüklemek için aşağıdaki komutları kullanabilirsiniz:

pip install numpy pandas scikit-learn

Bunları yükledikten sonra, bir Random Forest sınıflandırıcısı oluşturmak için hazır hale geleceğiz.

Veri Setini Hazırlama

Bir model oluşturmadan önce, veri setini hazırlamak büyük bir önem taşımaktadır. Veri setimizdeki özellikleri ve etiketleri belirleyerek, modelimizi etkili bir şekilde eğitmek mümkün olacaktır. Bu örnekte, popüler İris veri setini kullanacağız. İris veri seti, çiçek türlerini sınıflandırmaya yönelik bir örnek veri setidir ve hemen hemen her makine öğrenmesi kursunda yer almaktadır.

Öncelikle İris veri setini pandas ile okuyalım ve veriyi inceleyelim:

import pandas as pd
from sklearn.datasets import load_iris

dataset = load_iris()
X = pd.DataFrame(dataset.data, columns=dataset.feature_names)
y = pd.Series(dataset.target)

Burada X bağımsız değişkenleri yani özellikleri, y ise bağımlı değişkeni yani etiketleri temsil etmektedir. Şimdi, veriyi eğitim ve test setlerine ayırarak modelimizi eğitmek için hazırlayalım:

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Bu adımda, verimizi %80 eğitim ve %20 test olarak böldük. Bu ayrım, modelimizin ne kadar iyi çalıştığını test etmemiz açısından kritik öneme sahiptir.

Random Forest Sınıflandırıcısını Oluşturma ve Eğitme

Artık verimizi hazırladığımıza göre, Random Forest sınıflandırıcımızı oluşturmaya geçebiliriz. Scikit-learn kütüphanesi içerisinde yer alan RandomForestClassifier sınıfını kullanarak modelimizi oluşturacağız. Aşağıdaki kod bloğu ile modelimizi oluşturup eğitmeye başlayabiliriz:

from sklearn.ensemble import RandomForestClassifier

# Random Forest sınıflandırıcısını tanımla
model = RandomForestClassifier(n_estimators=100, random_state=42)

# Modeli eğit
model.fit(X_train, y_train)

Yukarıdaki kodda, n_estimators parametresi, ormandaki ağaç sayısını belirtir. Daha fazla ağaç eklemek, modelin doğruluğunu artırabileceği gibi, hesaplama süresini de artırabilir. Bu nedenle, bu değeri belirlerken dikkatli olunmalıdır.

Modelimizi eğittikten sonra, modelin performansını test setimiz üzerinde değerlendirebiliriz. Aşağıdaki kod ile tahminlerimizi yapacak ve modelin doğruluğunu göreceğiz:

from sklearn.metrics import accuracy_score

# Test seti üzerinde tahmin yap
predictions = model.predict(X_test)

# Modelin doğruluğunu hesapla
accuracy = accuracy_score(y_test, predictions)
print(f'Modelin doğruluğu: {accuracy:.2f}')

Bu adımda, modelin doğruluğunu hesaplamak için accuracy_score fonksiyonunu kullanıyoruz. Modelimiz başarılı bir şekilde eğitildi ve tahminlerimizi yaptı.

Sonuçların Değerlendirilmesi

Modelimizin doğruluğu, makine öğrenmesi uygulamalarında sıkça başvurulan bir metriktir. Ancak, modelin performansını değerlendirmek için yalnızca doğruluk oranını değil, aynı zamanda diğer metrikleri de dikkate almak önemlidir. Bu metrikler arasında confusion matrix, precision, recall ve F1 skoru yer almaktadır.

Confusion matrix, modelin hangi sınıfları doğru tahmin edip etmediğini gösterirken, precision ve recall metrikleri, modelin ne kadar güvenilir olduğunu açıklar. Aşağıdaki kod ile confusion matrix’i oluşturabiliriz:

from sklearn.metrics import confusion_matrix

# Confusion matrix'i oluştur
cm = confusion_matrix(y_test, predictions)
print('Confusion Matrisine Ait Veriler:')
print(cm)

Bu aşamada, confusion matrix verilerini inceleyerek, yanlış sınıflandırmaların nedenlerini anlamaya çalışabiliriz. Doğru tahmin edilen değerleri ve hata türlerini belirlemek, modelin iyileştirilmesi açısından kritik olabilir.

Özelliklerin Önem Derecelerini Belirleme

Random Forest algoritmaları, özelliklerin önem derecelerini belirlemede oldukça etkilidir. Bu, hangi özelliklerin model üzerinde daha fazla etkisi olduğunu anlamamıza yardımcı olur. Özelliklerin önem derecelerini görüntülemek için feature_importances_ parametresini kullanabiliriz:

Bu adımda, model tarafından tanımlanan her bir özelliğin önem derecelerini bar grafiği halinde görüntüleriz. Bu sayede, hangi özelliklerin model üzerindeki etkisi daha fazla, hangilerinin daha az olduğunu anlamış olacağız. Özelliklerin yeterince önemli olmaması durumunda, bu özelliklerin veri setinden çıkarılması, bir sonraki modellemelerde daha yüksek doğruluk sağlar.

Sonuç ve İleriye Dönük Adımlar

Bu yazımızda, Python ile Random Forest sınıflandırıcısını kullanarak bir model oluşturma sürecini detaylı bir şekilde inceledik. Verimizi hazırlamaktan, modeli oluşturup evaluate etmeye kadar olan tüm aşamaları adım adım ele aldık. Random Forest’ın güçlü yönlerinden bahsetmek ve Python’da nasıl etkili bir şekilde kullanılabileceğini göstermek adına önemli bilgiler sunduk.

Gelecek çalışmalar ve projeler için, modelin daha da iyileştirilmesi adına hiperparametre optimizasyonu, farklı veri setleri üzerinde denemeler, ya da modelin sklearn dışında başka bir kütüphane ile uygulanabilirliğini incelemek faydalı olabilir. Ayrıca, modelin daha büyük veri setleri üzerinde test edilmesi, sonuçların daha güvenilir olmasını sağlayacaktır.

Random Forest algoritması, hem başlangıç düzeyindeki kullanıcılar için basit bir başlangıç noktası hem de deneyimli geliştiriciler için karmaşık uygulamalar geliştirme potansiyeli sunar. Şimdi, kendi projelerinizde bu bilgileri nasıl uygulayacağınızı düşünün, denemeler yaparak öğrenim sürecinizi hızlandırabilirsiniz.

Scroll to Top