首先要明白KNN含義,KNN是K Nearest Neighbors 的縮寫,即k-最鄰近算法。
KNN一般用於分類,如果要區分一個個體屬於哪一類,就計算K個最鄰近的個體,其中,大多數個體屬於哪一類,就被分配到哪一類。
下面是用鳶尾花數據集進行演示:
首先需要引入庫裏面所需要的類
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
然後定義函數:
def knn_iris():
#1.獲取數據
iris=load_iris()
#2.劃分數據集
x_train,x_test,y_train,y_test=train_test_split(iris.data,iris.target,random_state=6)
#3.特徵工程:標準化
transfer=StandardScaler()
x_train=transfer.fit_transform(x_train)
x_test=transfer.fit_transform(x_test)
#4.KNN算法預估器
estimator=KNeighborsClassifier(n_neighbors=3)
estimator.fit(x_train,y_train)
#5.模型評估
#(1).直接比對
y_predict=estimator.predict(x_test)
print("y_predict:\n",y_predict)
print("直接比對真實值和預測值:\n",y_test==y_predict)
#(2).計算準確率
score=estimator.score(x_test,y_test)
print("準確率爲:\n",score)
return None
步驟一般分爲幾步:
1.獲取數據
2.劃分數據集:訓練集和測試集
3.特徵工程:標準化
4.KNN算法預估器 其實是分類器
5.模型評估
(1) 直接比對
(2) 計算準確率
關於參數K的討論:
K=1 時,k較小, 容易受異常點的影響
K較大時,當樣本不均衡時,容易出錯
優點:簡單,容易理解
缺點:1.懶惰算法,計算量大
2.指定k值不當,精度不能保證
結果爲: