AI-ML
Scikit-learn ile Makine Öğrenmesi: Başlangıç Rehberi
📅 19.08.2025
⏱️ 12 dk okuma
👤 AI Python Eğitimi
🤖 Scikit-learn Nedir?
Scikit-learn, Python için en popüler makine öğrenmesi kütüphanesidir. Basit ve verimli veri madenciliği ve veri analizi araçları sunar.
Scikit-learn'ün Özellikleri:
- Geniş Algoritma Yelpazesi: Sınıflandırma, regresyon, kümeleme
- Tutarlı API: Tüm algoritmalar aynı yapıyı takip eder
- İyi Dokümantasyon: Örnekler ve açıklamalarla zengin
- NumPy/SciPy Entegrasyonu: Hızlı ve verimli
📦 Kurulum
pip install scikit-learn
📊 İlk Makine Öğrenmesi Modeli
Veri Seti Hazırlama
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
import numpy as np
# Iris veri seti (çiçek türü sınıflandırma)
iris = datasets.load_iris()
X = iris.data # Özellikler
y = iris.target # Hedef değişken
print(f"Veri seti boyutu: {X.shape}")
print(f"Özellik isimleri: {iris.feature_names}")
print(f"Sınıf isimleri: {iris.target_names}")
Veriyi Bölme (Train-Test Split)
# Veriyi eğitim ve test olarak ayırma
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42
)
print(f"Eğitim seti boyutu: {X_train.shape}")
print(f"Test seti boyutu: {X_test.shape}")
🔧 Veri Ön İşleme
Standartlaştırma
# Özellikleri standartlaştırma (0 ortalama, 1 standart sapma)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
print(f"Orijinal veri ortalama: {X_train.mean(axis=0)}")
print(f"Standartlaştırılmış veri ortalama: {X_train_scaled.mean(axis=0)}")
🎯 Sınıflandırma Algoritmaları
K-En Yakın Komşu (KNN)
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, classification_report
# Model oluşturma
knn = KNeighborsClassifier(n_neighbors=3)
# Modeli eğitme
knn.fit(X_train_scaled, y_train)
# Tahmin yapma
y_pred = knn.predict(X_test_scaled)
# Sonuçları değerlendirme
accuracy = accuracy_score(y_test, y_pred)
print(f"KNN Doğruluk: {accuracy:.3f}")
print(f"Detaylı rapor:\n{classification_report(y_test, y_pred)}")
Random Forest
from sklearn.ensemble import RandomForestClassifier
# Random Forest modeli
rf = RandomForestClassifier(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)
rf_pred = rf.predict(X_test)
# Özellik önemliliği
importances = rf.feature_importances_
for i, importance in enumerate(importances):
print(f"{iris.feature_names[i]}: {importance:.3f}")
print(f"Random Forest doğruluk: {accuracy_score(y_test, rf_pred):.3f}")
Destek Vektör Makineleri (SVM)
from sklearn.svm import SVC
# SVM modeli
svm = SVC(kernel='rbf', random_state=42)
svm.fit(X_train_scaled, y_train)
svm_pred = svm.predict(X_test_scaled)
print(f"SVM doğruluk: {accuracy_score(y_test, svm_pred):.3f}")
📈 Regresyon
Basit Doğrusal Regresyon
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt
# Basit bir veri seti oluşturma
np.random.seed(42)
X_reg = np.random.rand(100, 1) * 10
y_reg = 3 * X_reg.ravel() + 2 + np.random.normal(0, 2, 100)
# Train-test split
X_train_reg, X_test_reg, y_train_reg, y_test_reg = train_test_split(
X_reg, y_reg, test_size=0.3, random_state=42
)
# Doğrusal regresyon
lin_reg = LinearRegression()
lin_reg.fit(X_train_reg, y_train_reg)
y_pred_reg = lin_reg.predict(X_test_reg)
# Değerlendirme
mse = mean_squared_error(y_test_reg, y_pred_reg)
r2 = r2_score(y_test_reg, y_pred_reg)
print(f"Mean Squared Error: {mse:.2f}")
print(f"R² Score: {r2:.3f}")
print(f"Model katsayısı: {lin_reg.coef_[0]:.2f}")
print(f"Model bias: {lin_reg.intercept_:.2f}")
🎯 Kümeleme
K-Means Kümeleme
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# K-means kümeleme
kmeans = KMeans(n_clusters=3, random_state=42)
clusters = kmeans.fit_predict(X)
print(f"Küme merkezleri: {kmeans.cluster_centers_}")
print(f"Inertia (WCSS): {kmeans.inertia_:.2f}")
🔬 Model Değerlendirme
Çapraz Doğrulama
from sklearn.model_selection import cross_val_score
# 5-fold çapraz doğrulama
cv_scores = cross_val_score(knn, X_train_scaled, y_train, cv=5)
print(f"CV Skorları: {cv_scores}")
print(f"CV Ortalama: {cv_scores.mean():.3f}")
print(f"CV Standart Sapma: {cv_scores.std():.3f}")
Hiperparametre Optimizasyonu
from sklearn.model_selection import GridSearchCV
# KNN için en iyi k değerini bulma
param_grid = {'n_neighbors': [3, 5, 7, 9, 11]}
grid_search = GridSearchCV(KNeighborsClassifier(), param_grid, cv=5)
grid_search.fit(X_train_scaled, y_train)
print(f"En iyi parametreler: {grid_search.best_params_}")
print(f"En iyi CV skoru: {grid_search.best_score_:.3f}")
# Test seti ile final değerlendirme
best_model = grid_search.best_estimator_
test_score = best_model.score(X_test_scaled, y_test)
print(f"Test skoru: {test_score:.3f}")
🔄 Pipeline Kullanımı
from sklearn.pipeline import Pipeline
# Pipeline oluşturma
pipeline = Pipeline([
('scaler', StandardScaler()),
('classifier', KNeighborsClassifier(n_neighbors=5))
])
# Pipeline'ı eğitme
pipeline.fit(X_train, y_train)
pipeline_accuracy = pipeline.score(X_test, y_test)
print(f"Pipeline doğruluğu: {pipeline_accuracy:.3f}")
# Pipeline ile hiperparametre optimizasyonu
pipeline_grid = GridSearchCV(pipeline, {
'classifier__n_neighbors': [3, 5, 7, 9]
}, cv=5)
pipeline_grid.fit(X_train, y_train)
print(f"Pipeline en iyi parametreler: {pipeline_grid.best_params_}")
🏆 Sonuç
Scikit-learn ile makine öğrenmesine başlamak oldukça kolay! Bu rehberde öğrendiklerinizle artık gerçek veri setleri üzerinde çalışabilir ve makine öğrenmesi projeleri geliştirebilirsiniz. Sürekli pratik yaparak becerilerinizi geliştirmeye devam edin!
Etiketler:
scikit-learn makine-öğrenmesi python ai