淺析python機器學習之KNN分類器

首先要明白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值不當,精度不能保證

 

結果爲:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章