Makine Öğrenimine Genel Bakış
Günümüzde veriler, karar alma süreçlerinden iş geliştirmeye kadar birçok alanda kritik bir rol oynamaktadır. Bu nedenle, verileri analiz etmek ve onlardan anlamlı sonuçlar çıkarmak için makine öğrenimi (ML) teknikleri gittikçe daha fazla önem kazanmaktadır. Makine öğrenimi, bilgisayarların veri kullanarak kendilerini geliştirmesine olanak tanır ve bu sayede birçok karmaşık problem daha etkili bir şekilde çözülebilir.
Python, makine öğrenimi alanında en popüler programlama dillerinden biri haline gelmiştir. Bunu, geniş kütüphane ekosistemi ve özellikle Scikit-Learn gibi güçlü bir makine öğrenimi kütüphanesine sahip olmasına borçludur. Scikit-Learn, kullanıcı dostu bir arayüze sahip olması ve sağlam algoritmalar sunmasıyla dikkat çekmektedir. Python’da makine öğrenimine meraklı olan herkese, Scikit-Learn aracılığıyla bu alanda başlangıç yapma imkânı sunar.
Bu yazıda, Scikit-Learn kütüphanesini tanıyacak, temel kullanım örnekleri ile Python’da makine öğrenimine nasıl adım atabileceğinizi öğreneceksiniz. Ayrıca, veri ön işleme, model oluşturma, model değerlendirme ve tahmin yapma gibi temel kavramlar üzerinde duracağız.
Scikit-Learn Nedir?
Scikit-Learn, Python’da yazılmış açık kaynaklı bir makine öğrenimi kütüphanesidir. Kullanıcıların çeşitli algoritmalar ve teknikler kullanarak makine öğrenimi modelleri oluşturmasına olanak tanır. Kütüphane, regresyon, sınıflandırma, kümeleme, boyut azaltma gibi birçok makine öğrenimi görevini destekler ve oldukça kapsamlı bir dokümantasyona sahiptir.
Ayrıca, Scikit-Learn, NumPy ve SciPy gibi diğer popüler kütüphanelerle entegrasyon kolaylığı sunarak, bilimsel hesaplama ve veri analizi için güçlü bir temel sağlar. Bu özellikleri sayesinde yeni başlayanlardan profesyonellere kadar geniş bir kullanıcı kitlesine hitap etmektedir. Kullanıcılar, deneme yanılma yoluyla hızlı bir şekilde, farklı algoritmaları ve hiper parametreleri test edebilirler.
Scikit-Learn’ün sağladığı araçlar şunlardır:
- Veri Ön İşleme: Verileri ölçeklendirme, normalizasyon yapma, eksik verileri doldurma ve kategorik değişkenleri dönüştürme gibi işlemler için araçlar.
- Modelleme: Sınıflandırma, regresyon ve kümeleme algoritmaları, örneğin, karar ağaçları, rastgele ormanlar, destek vektör makineleri (SVM) ve kNN.
- Model Değerlendirme: Çeşitli ölçüm yöntemleri ile model performansınızı değerlendirme olanağı sunar.
Veri Setinin Hazırlanması
Makine öğrenimi projelerine başlamadan önce, veri setinin hazırlanması kritik bir aşamadır. Scikit-Learn kullanarak bir model oluşturmak için, genellikle veri setini yüklemeli, ön işlemelere tabi tutmalı ve eğitim ve test setlerine ayırmalısınız. Aşağıda, bu adımların nasıl gerçekleştirileceğine dair bir örnek verilecektir.
Öncelikle, gerekli kütüphaneleri yükleyelim:
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
Daha sonra, bir veri setini yükleyelim. Örneğin, Pandas ile CSV dosyasını okuyarak başlayabiliriz:
data = pd.read_csv('veri_seti.csv')
Veri setimizin başını görmek için:
print(data.head())
Bir veri setinde genellikle eksik veriler, dengesiz sınıflar veya anormal değerler olabilir. Bu tür problemleri çözmek için, Scikit-Learn ve Pandas araçlarını kullanarak aşağıdaki işlemleri gerçekleştirebiliriz:
data.dropna(inplace=True) # Eksik verileri kaldırmak
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
data[['feature1', 'feature2']] = scaler.fit_transform(data[['feature1', 'feature2']])
Veri setini hızlı bir şekilde gözden geçirdikten sonra, model oluşturma aşamasına geçmeden önce eğitim ve test setlerine ayırmalıyız. Bunun için train_test_split yöntemini kullanabiliriz:
X = data.drop('target', axis=1)
y = data['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Model Oluşturma ve Eğitim
Veri setimiz hazır olduğuna göre, bir makine öğrenimi modeli oluşturma ve eğitim aşamasına geçebiliriz. Örneğin, karar ağaçları veya rastgele ormanlar gibi basit ve etkili modellerle başlayabiliriz. Aşağıda, bir karar ağacı sınıflandırıcısının nasıl oluşturulacağını ve eğitileceğini göreceksiniz:
from sklearn.tree import DecisionTreeClassifier
# Model nesnesini oluşturma
model = DecisionTreeClassifier()
model.fit(X_train, y_train)
Model eğitimini tamamladıktan sonra, test setini kullanarak modelin doğruluğunu değerlendirebiliriz:
accuracy = model.score(X_test, y_test)
print(f'Model doğruluğu: {accuracy:.2f}') # Doğruluk oranını yazdırma
Bu aşamada modelin performansını daha iyi anlamak için, modelinizin doğruluk oranına ek olarak, doğru ve yanlış tahminlerle ilgili daha fazla ayrıntı elde etmek için karmaşıklık matrisine de göz atmak isteyebilirsiniz:
from sklearn.metrics import confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt
# Karmaşıklık matrisini oluşturma
y_pred = model.predict(X_test)
cm = confusion_matrix(y_test, y_pred)
sns.heatmap(cm, annot=True, fmt='d')
plt.ylabel('Gerçek Etiketler')
plt.xlabel('Tahmin Edilen Etiketler')
plt.show()
Modelin İyileştirilmesi
Modelinizin ilk versiyonunu tamamladıktan sonra, performansını iyileştirmek için çeşitli yollar deneyebilirsiniz. Bu, hiper parametre ayarı yapmak veya daha gelişmiş modeller denemek anlamına gelebilir. Scikit-Learn, GridSearchCV veya RandomizedSearchCV gibi araçlar kullanarak bu süreci daha da kolaylaştırır.
Örneğin, GridSearchCV kullanarak en iyi hiper parametreleri bulmak için aşağıdaki adımları takip edebilirsiniz:
from sklearn.model_selection import GridSearchCV
param_grid = {'max_depth': [None, 10, 20, 30], 'min_samples_split': [2, 5, 10]}
grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5)
grid_search.fit(X_train, y_train)
En iyi modeli bulduktan sonra, yeniden test seti üzerinde değerlendirerek doğruluğunuzu kontrol edin:
best_model = grid_search.best_estimator_
accuracy_best = best_model.score(X_test, y_test)
print(f'İyileştirilmiş model doğruluğu: {accuracy_best:.2f}')
Sonuç ve İleri Adımlar
Scikit-Learn ile Python’da makine öğrenimine dair temel konuları özetlediğimiz bu yazının sonuna geldik. Veri setinizi hazırladıktan sonra, modelinizi oluşturup eğittikten sonra performansını değerlendirme aşamasına geçebilirsiniz. Makine öğrenimi uygulamaları geniş bir yelpazeye sahiptir ve kullandığınız model veya algoritma, projenizin amacına bağlı olarak değişiklik gösterebilir.
Geçmişte bahsedilen model iyileştirme tekniklerini kullanarak, uygulamanızdaki sonuçlarınızı artırmayı hedefleyebilirsiniz. Ayrıca, daha karmaşık modeller denemeyi ve farklı veri setleri üzerinde denemeler yapmayı unutmayın. Her yeni deneme, sizi doğruluğu artırmak için bir adım daha ileri taşıyabilir.
Python’da makine öğrenimi uygulamalarınızı genişletmek için, Scikit-Learn dışında TensorFlow veya Keras gibi diğer kütüphaneleri de araştırabilirsiniz. Makine öğrenimi konusundaki bilgi birikiminizi artırmak için online kurslar veya kitaplar gibi kaynaklardan faydalanabilirsiniz. Kendi projelerinizi geliştirmekten çekinmeyin; bu sayede teorik bilgilerinizi pratiğe dökme fırsatı bulacaksınız.