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

Bu yazıyı paylaş

Twitter Facebook LinkedIn

🚀 Python ve AI öğrenmeye devam et!

Ücretsiz Python kursumuza katıl ve AI dünyasında kariyerine başla.

Python Kursuna Başla