Scikit-learn, hem KNN hem de DBSCAN algoritmalarını içeren popüler bir makine öğrenmesi kütüphanesidir. Bu algoritmalar, scikit-learn'ün neighbors ve cluster modülleri altında bulunur. Aşağıda her iki algoritmanın scikit-learn'de nasıl kullanıldığına dair örnekler ekledim.
1. KNN (K-Nearest Neighbors) - Sınıflandırma
KNN, scikit-learn'de KNeighborsClassifier sınıfı ile kullanılır. Aşağıda basit bir sınıflandırma örneği bulabilirsiniz:
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
# Iris veri setini yükle
data = load_iris()
X = data.data
y = data.target
# Veriyi eğitim ve test setlerine ayır
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# KNN modelini oluştur ve eğit
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# Tahmin yap ve doğruluğu hesapla
y_pred = knn.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Doğruluk: {accuracy * 100:.2f}%")
2. DBSCAN - Kümeleme
DBSCAN, scikit-learn'de DBSCAN sınıfı ile kullanılır. Aşağıda basit bir kümeleme örneği yer almaktadır:
from sklearn.datasets import make_blobs
from sklearn.cluster import DBSCAN
import matplotlib.pyplot as plt
# Veriyi oluştur
X, _ = make_blobs(n_samples=500, centers=3, cluster_std=0.60, random_state=0)
# DBSCAN modelini oluştur
dbscan = DBSCAN(eps=0.3, min_samples=10)
y_dbscan = dbscan.fit_predict(X)
# Kümeleme sonuçlarını görselleştir
plt.scatter(X[:, 0], X[:, 1], c=y_dbscan, cmap='viridis')
plt.title("DBSCAN Kümeleme Sonuçları")
plt.show()
Scikit-learn'deki Temel Parametreler:
KNN Parametreleri:
n_neighbors: Komşu sayısı (K).
metric: Mesafe ölçütü (örneğin, 'euclidean', 'manhattan').
DBSCAN Parametreleri:
eps: Bir noktanın komşuları ile olan maksimum mesafe.
min_samples: Küme oluşturulabilmesi için gereken minimum nokta sayısı.
Avantajlar ve Dezavantajlar
KNN:
Avantaj: Basit, esnek ve küçük veri setleri için hızlıdır.
Dezavantaj: Büyük veri setlerinde, özellikle yüksek boyutlu verilerde zaman karmaşıklığı yüksek olabilir.
DBSCAN:
Avantaj: Gürültüye duyarlıdır ve karmaşık şekilli kümeleri tanıyabilir.
Dezavantaj: Parametre ayarları, özellikle eps ve min_samples doğru seçilmediğinde kötü sonuçlar verebilir.
Bu şekilde, scikit-learn'deki KNN ve DBSCAN algoritmalarını kullanarak verinizi sınıflandırabilir veya kümeleyebilirsiniz.