k-NN (k 이웃)의 파이썬 구현
k-NN(k근방법)이란
한 그룹 A와 그룹 B가 있다고 해서, 그 사람들의 속성을 알고 있을 때, 어느 그룹에 속하는지 모르는 새로운 사람이 온 케이스를 생각합니다.
여기에서 그 사람이 A와 B의 어느 그룹에 속하는지 생각할 때, 그 사람과 속성이 가까운 k인을 선택해, 그 사람들이 그룹 A에 많았는지 아니면 그룹 B에 많은지를 조사해, 많은 쪽 를 새로운 사람의 그룹으로 만드는 것이 k-NN에 의한 분류 방법입니다. k-NN의
k
는 결정에 이용하는 인원수에 상당합니다. k-NN은 게으른 학습이라고도 불리며 훈련 데이터를 그대로 기억하고 학습시킵니다.k-NN의 모델 구축
k-NN을 사용하여 모델을 구축해 보겠습니다.
sklearn.neibors
모듈의 KNeighborsClassifier
클래스를 사용합니다. 데이터의 예로서 유방암에 관한 데이터 세트를 load_breast_cancer
함수로 취득해 사용합니다.여기에서는
k
를 1에서 10까지 변화시켜 훈련 데이터와 테스트 데이터의 정답률의 변화를 살펴보겠습니다. k
가 작을 때는 정답률에 차이가 있습니다만, 6~8당에서 훈련과 테스트의 정답률이 가깝습니다. 그 이상 증가해도 모델 정밀도에 큰 변화는 보이지 않습니다. 정밀도에 개선이 보이지 않는 경우, 별로 k를 크게 할 필요가 없기 때문에, 본 케이스에 있어서는 6~8정도로 설정해 두는 것이 좋다고 생각됩니다.# インポート
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
# データセットの読み込み
cancer = load_breast_cancer()
# 訓練データとテストデータに分ける
X_train, X_test, y_train, y_test = train_test_split(
cancer.data, cancer.target, stratify = cancer.target, random_state=0)
# 可視化のためのリスト作成
training_accuracy = []
test_accuracy = []
# 学習
for n_neighbors in range(1, 11):
model = KNeighborsClassifier(n_neighbors=n_neighbors)
model.fit(X_train, y_train)
training_accuracy.append(model.score(X_train, y_train))
test_accuracy.append(model.score(X_test, y_test))
# 可視化
plt.plot(range(1, 11), training_accuracy, label='Training')
plt.plot(range(1, 11), test_accuracy, label='Test')
plt.ylabel('Accuracy')
plt.xlabel('n_neighbors')
plt.legend()
Reference
이 문제에 관하여(k-NN (k 이웃)의 파이썬 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Tomo-master1/items/b67b5cdde005b37ffdaf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)