knn 演算法的原理及實現—手動寫法
import numpy as np
import matplotlib.pyplot as plt
from math import sqrt
from collections import counter
x =[
[2.40
,2.0],
[4.1
,2.8],
[1.2
,1.4],
[0.6
,3.7],
[1.3
,2.5],
[6.4
,4.2],
[1.7
,4.5],
[8.2
,3.5]]
y=[0,
0,0,
0,0,
1,1,
1]sample =
[5.0
,6.2
]k =
3x_train = np.
array
(x)y_train = np.
array
(y)distance =
for i in x_train:
d =sqrt
(np.
sum(i - sample)**2
) distance.
(d)nearst = np.
argsort
(distance)
[:k]
# print
(nearst)
k_y =
[y_train[j]
for j in nearst]
# print
(k_y)
count =
counter
(k_y)
print
(count)
count.
most_common(1
)[0]
[0]plt.
scatter
(x_train[y_train ==0,
0],x_train[y_train ==0,
1],color =
'g')
plt.
scatter
(x_train[y_train ==1,
0],x_train[y_train ==1,
1],color =
'r')
plt.
scatter
(5.0
,6.2
,color =
'b')
plt.
show
()
用 knn 演算法,對 scikit-learn 內建的手寫數字識別資料集進行**
1.匯入scikit-learn 內建的手寫數字識別資料集
import numpy as np
import pandas as pd
from sklearn import datasets
iris = datasets.
load_digits()
# iris.
keys()
x = iris.data
y = iris.target
2.將資料分為訓練集和測試集
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 =
666)
3.將資料進行歸一化
from sklearn.preprocessing import standardscaler
standscaler =
standardscaler
() # 建立例項
standscaler.
fit(x_train) # 訓練資料,不需要特徵y 儲存計算出來的均值和方差
# 對資料及逆行轉換,用於測試資料
std_x_train = standscaler.
transform
(x_train) # 用fit中儲存的均值和方差來轉換x_train,使x_train標準化
std_x_test = standscaler.
transform
(x_test)
4.構建knn模型
from sklearn.neighbors import kneighborsclassifier
clf =
kneighborsclassifier
(n_neighbors =6)
clf.
fit(std_x_train,y_train)
clf.
score
(std_x_test,y_test)
5.對knn模型進行網格搜尋,尋找最優的模型和引數
from sklearn.model_selection import gridsearchcv
clf =
kneighborsclassifier()
param_grid =
gs_clf =
gridsearchcv
(clf,param_grid = param_grid)
gs_clf.
fit(std_x_train, y_train)
gs_clf.best_estimator_
gs_clf.best_params_
# gs_clf.best_score_
6.利用最優的模型對測試集進行**,計算**的準確度
clf =
kneighborsclassifier
(n_neighbors =
6,weights =
'distance'
)clf.
fit(std_x_train,y_train)
clf.
score
(std_x_test,y_test)
kNN分類演算法
knn k nearest neighbors 又叫k最鄰近演算法,是一種根據待分類的樣本與已知類別的樣本間的距離得到其分類結果的分類演算法。計算待分類樣本與所有已知類別樣本的距離值 從這些距離值中選取最小的k個 根據這k個樣本的類別情況,確定待分類的分類結果 距離的計算 這裡的距離其實是一種相似度...
kNN分類演算法
一 概述 knn演算法採用測量不同特徵值之間的距離方法進行分類。對未知類別屬性的資料集中的每個點執行如下操作 1 計算已知類別資料集中的點與當前點之間的距離 2 按照距離遞增次序排序 3 選取與當前點距離最小的k個點 4 確定前k個點所在類別的出現頻率 5 返回前k個點出現頻率最高的類別作為當前點的...
kNN分類演算法
一 演算法實施過程 1 計算已知類別資料集中的點與當前點之間的距離 2 按照距離遞增次序排序 3 選取與當前點距離最小的k個點 4 確定前k個點所在類別的出現頻率 5 返回前k個點出現頻率最高的類別作為當前點的 分類。二 python 實現 from numpy import import oper...