k-En Yakın Komşu Algoritması (k-Nearest Neighbor Algorithm) uzaklık hesaplamasına dayalı geliştirilen bir sınıflandırma yöntemidir, benzerliğe dayalı bir algoritmadır. Sınıfı bilinmeyen verinin diğer verilere olan uzaklıklarının hesaplanarak, en yakın sınıfa dahil edilmesi mantığına dayanır. O yüzden öncelikle veriler arasındaki uzaklıkların hesaplanmasında kullanılan yaygın yöntemler üzerinde durulmalıdır.
Hangi uzaklık ölçüsünü kullanacağınızı bilmenizde fayda var: Öklid Mesafesi, Minkowski uzaklık, Manhattan uzaklık, Jaccard katsayısı
The 'metric' parameter of KNeighborsClassifier must be a str among {'l2', 'sokalmichener', 'p', 'infinity', 'matching', 'chebyshev', 'l1', 'euclidean', 'canberra', 'mahalanobis', 'nan_euclidean', 'minkowski', 'rogerstanimoto', 'precomputed', 'hamming', 'jaccard', 'yule', 'dice', 'wminkowski', 'cityblock', 'kulsinski', 'sqeuclidean', 'correlation', 'pyfunc', 'russellrao', 'sokalsneath', 'cosine', 'manhattan', 'haversine', 'seuclidean', 'braycurtis'}
Python İle KNN Sınıflandırma
#1. kutuphaneler
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
veriler=pd.read_csv("veriler.csv")
#ulke,boy,kilo,yas,cinsiyet
x=veriler.iloc[:,1:4].values
y=veriler.iloc[:,4:].values
#Şimdi Train ve Test olarak ayırma işlemi yapalı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.33,random_state=0)
#STANDARTLAŞTIRMA
from sklearn.preprocessing import StandardScaler
sc=StandardScaler()
X_train=sc.fit_transform(x_train)#fit_transform
X_test=sc.transform(x_test)#transform
#KNN
from sklearn.neighbors import KNeighborsClassifier
knn_r=KNeighborsClassifier(n_neighbors=1,metric='minkowski')
knn_r.fit(X_train,y_train)#X den Y öğren
#şimdi öğrendiğin bilgi ile predict-tahmin yap
y_pred=knn_r.predict(X_test)
print(y_pred)
print(y_test)
#CONFUSION MATRİX-HATA MATRİSİ
from sklearn.metrics import confusion_matrix
cm=confusion_matrix(y_test,y_pred)
print(cm)
Kaynaklar
- https://www.youtube.com/watch?v=NEAxrOP_OT0
- https://ichi.pro/tr/k-en-yakin-komsular-ile-k-ortalama-kumeleme-arasindaki-fark-nedir-36508279026525
- https://twitter.com/levikul09/status/1672896169763303424
- https://machinelearningmastery.com/types-of-classification-in-machine-learning/
- https://www.digitalocean.com/community/tutorials/k-nearest-neighbors-knn-in-python