다음처럼 카테고리가 레이블링 되어 있는 데이터가 존재합니다.
새로운 데이터가 생겼을때, 이를 어디로 분류해야 할까요?
왜 빨간색으로 분류를 했을까요.
KNN 알고리즘
내 주위에 몇개의 이웃을 확인해 볼것인가를 결정한다. => K
# K를 하이퍼 파라미터(hyper parameter)라고 한다.
# : 우리(사람)가 결정해줘야 하는 파라미터(항목)
새로운 데이터가 발생 시, Euclidean distance 에 의해서, 가장 가까운 K 개의 이웃을 택한다.
K 개의 이웃의 카테고리를 확인한다.
카테고리의 숫자가 많은 쪽으로, 새로운 데이터의 카테고리를 정해버린다.
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X = scaler.fit_transform(X)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=3)
# KNN 으로 모델링
from sklearn.neighbors import KNeighborsClassifier
classifier = KNeighborsClassifier(n_neighbors=5)
classifier.fit(X_train, y_train)
KNeighborsClassifier()
# 검증
y_pred = classifier.predict(X_test)
y_test
y_pred
from sklearn.metrics import confusion_matrix, accuracy_score
cm = confusion_matrix(y_test, y_pred)
cm
array([[50, 5],
[ 3, 22]], dtype=int64)
accuracy_score(y_test, y_pred)
0.9
sb.heatmap(data=cm, annot=True, cmap='RdPu', linewidths=0.5)
plt.show()
plt.show()

반응형
'AI 이론 > Classification (supervised)' 카테고리의 다른 글
[머신러닝] Decision Tree (0) | 2021.11.25 |
---|---|
[머신러닝] Support Vector Machine (SVM), sklearn.svm.SVC (0) | 2021.11.24 |
[분류 러닝] 성능 측정 => Confusion Matrix (0) | 2021.11.24 |
[머신러닝] Logistic Regression (0) | 2021.11.24 |
[머신러닝] Multiple Linear Regression (0) | 2021.11.24 |