K-Neighbors Classifier란 분류하고자 하는 샘플(Pt)과 가장 가까운 K개의 이웃들 중 가장 많이 속해있는 클래스를 선택하는 분류기이다.
![]() |
![]() 만약 k=3으로 하면 별은 보라색원에 속하는 것이고(보라색원 2 > 노란색원 1) 만약 k=6으로 하면 별은 노란색원에 속하게 된다 (보라색원 2 < 노란색원 4) |
아래는 IRIS 데이터셋의 샘플
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report, confusion_matrix
import pandas as pd
import seaborn as sns
import numpy as np
iris = sns.load_dataset('iris')
X_iris = iris.drop(columns=['species'], axis=1)
y_iris = iris['species']
# Split dataset into random train and test subsets:
Xtrain, Xtest, ytrain, ytest = train_test_split(X_iris, y_iris, random_state=1)
# Standardize features by removing mean and scaling to unit variance:
scaler = StandardScaler()
scaler.fit(Xtrain)
Xtrain = scaler.transform(Xtrain)
Xtest = scaler.transform(Xtest)
# Use the KNN classifier to fit data:
classifier = KNeighborsClassifier(n_neighbors=5)
classifier.fit(Xtrain, ytrain)
# Predict y data with classifier:
y_predict = classifier.predict(Xtest)
|
Classifier의 성능을 살펴보자
print(confusion_matrix(ytest, y_predict))
print(classification_report(ytest, y_predict))
confusion_matrix 결과 (각 종류에 대해 True Positive 의 결과 수)
classification_report 결과
그럼 무작위 데이터로 분류를 해 보자
X_sample = np.array([[5.7, 3.0, 2.2, 1.4]])
X_sample = scaler.transform(X_sample)
y_sample = classifier.predict(X_sample)
print(y_sample)
분류결과로서 ['versicolor'] 가 나왔다.
'data science > machine learning' 카테고리의 다른 글
SVM(Support Vector Machines) Classifier (0) | 2025.04.02 |
---|---|
Naïve Bayes (나이브 배이스) Classifier - ROC curve (0) | 2025.03.11 |
Naïve Bayes (나이브 배이스) Classifier - 실전 2 (0) | 2025.03.08 |
Naïve Bayes (나이브 배이스) Classifier - 실전 1 (0) | 2025.02.14 |
Naïve Bayes (나이브 배이스) Classifier (0) | 2025.02.09 |