[Python] K-Nearest Negihbors
K-Nearest Negihbors
基本概念
与えられた
大量の
K-Nearest Neighbors(K-NN)
1つのアルゴリズム
=> ((p1-q1)^2 + (p2-q2)^2)^0.5
KNeighborsClassifier(n_neighbors, weights, algorithm, leaf_size, p, metric, metric_params, n_jobs)
- n_neighbors : 이웃의 수 (default : 5)
- weights : 예측에 사용된 가중 함수 (uniform, distance) (default : uniform)
- algorithm : 가까운 이웃을 계산하는데 사용되는 알고리즘 (auto, ball_tree, kd_tree, brute)
- leaf_size : BallTree 또는 KDTree에 전달 된 리프 크기
- p : (1 : minkowski_distance, 2: manhattan_distance 및 euclidean_distance)
- metric : 트리에 사용하는 거리 메트릭스
- metric_params : 메트릭 함수에 대한 추가 키워드 인수
- n_jobs : 이웃 검색을 위해 실행할 병렬 작업 수
Irisデータを用いたKNN分類実験# 데이터 가져오기
from sklearn.datasets import load_iris
import sklearn.datasets
iris_dataset = load_iris()
# 훈련 데이터와 테스트 데이터 준비
from sklearn.model_selection import train_test_split
X = iris_dataset.data
y = iris_dataset.target
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
# 75% : 25% default
# 데이터 조사
# 산점도 행렬 : 3개 이상의 특성을 표현
# 4개의 특성을 갖는 붓꽃
import pandas as pd
iris_df = pd.DataFrame(X_train, columns=iris_dataset.feature_names)
pd.plotting.scatter_matrix(iris_df, c=y_train)
#학습
from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier(n_neighbors=1)
model.fit(X_train, y_train)
#예측
from sklearn import metrics
pred = model.predict(X_test)
ac_score = metrics.accuracy_score(y_test, pred)
ac_score
より少ない
# KNeighborsClassifier 분석
import mglearn
import matplotlib.pyplot as plt
X, y = mglearn.datasets.make_forge()
fig, axes = plt.subplots(1, 3, figsize=(10, 3))
for n, ax in zip([1, 3, 9], axes):
model = KNeighborsClassifier(n_neighbors=n)
model.fit(X, y)
mglearn.plots.plot_2d_separator(model, X, ax=ax, fill=True, alpha=0.5)
mglearn.discrete_scatter(X[:, 0], X[:, 1], y, ax=ax)
ax.set_title(f'{n} neigbhors')
Reference
この問題について([Python] K-Nearest Negihbors), 我々は、より多くの情報をここで見つけました https://velog.io/@gandi0330/Python-K-Nearest-Negihborsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol