【挖掘模型】:Python-KNN算法

KNN-K近鄰 分類算法原理

        # 從訓(xùn)練集中找到和新數(shù)據(jù)最接近的K條記錄,然后根據(jù)他們的主要分類來決定新的數(shù)據(jù)的類別
        # 圖中的數(shù)據(jù)集是良好的數(shù)據(jù),即都打好了label,一類是藍色的正方形,一類是紅色的三角形,那個綠色的圓形是我們待分類的數(shù)據(jù)。
            # 具體是每次來一個未知的樣本點,就在附近找K個最近的點進行投票
            # 如果K=3,那么離綠色點最近的有2個紅色三角形和1個藍色的正方形,這3個點投票,于是綠色的這個待分類點屬于紅色的三角形。
            # 如果K=5,那么離綠色點最近的有2個紅色三角形和3個藍色的正方形,這5個點投票,于是綠色的這個待分類點屬于藍色的正方形。
        # KNN本質(zhì)是基于一種數(shù)據(jù)統(tǒng)計的方法!其實很多機器學(xué)習(xí)算法也是基于數(shù)據(jù)統(tǒng)計的。
    # K的含義:來了一個樣本x,要給它分類,即求出它的y,就從數(shù)據(jù)集中,在x附近找離它最近的K個數(shù)據(jù)點,這K個數(shù)據(jù)點,類別c占的個數(shù)最多,就把x的label設(shè)為c
    # 抽樣方法
        # 打亂順序后的隨機數(shù)組 = numpy.random.permutation(n_隨機樣本的個數(shù))
    # API  neighbors.KNeighborsClassifier KNN建模的方法
        # knnModel = neighbors.KNeighborsClassifier(n_neigbors = 5)
            # n_neighbors    n的個數(shù)
            # 返回            KNN模型
        # knnModel.fit(tData_訓(xùn)練數(shù)據(jù)的屬性數(shù)據(jù),tTarget_訓(xùn)練數(shù)據(jù)的目標(biāo)數(shù)據(jù)) KNN訓(xùn)練方法
        # sklearn包
            # knnModel.score(sData_測試數(shù)據(jù)的屬性數(shù)據(jù),sTarget測試數(shù)據(jù)的目標(biāo)數(shù)據(jù)) KNN評分方法
            # knnModel.predict(pdata_需要預(yù)測的屬性數(shù)據(jù)) --》模型預(yù)測的結(jié)果   

KNN-K近鄰 源代碼

import numpy

from sklearn import datasets
#引入數(shù)據(jù)集
iris = datasets.load_iris()
#查看數(shù)據(jù)的規(guī)模
iris.data.shape # shape數(shù)據(jù)的規(guī)模
#查看訓(xùn)練目標(biāo)的總類
numpy.unique(iris.target) # count(distinct target)

#隨機重排列
permutation = numpy.random.permutation(iris.target.size) # iris.target.size -->len(iris.target)

iris.data = iris.data[permutation] # 隨機的分類對應(yīng)的數(shù)據(jù)

iris.target = iris.target[permutation] # 重排

from sklearn import neighbors

#搭建KNN模型
knnModel = neighbors.KNeighborsClassifier(n_neighbors=3) # 訓(xùn)練目標(biāo)為三類
#訓(xùn)練模型
knnModel.fit(iris.data[:100], iris.target[:100]) # 前100列

from sklearn import cross_validation

#對模型進行評價
knnModel.score(iris.data[100:], iris.target[100:]) 
cross_validation.cross_val_score(
    knnModel, 
    iris.data[100:], 
    iris.target[100:]
) # 交叉評分,三個分類的命中率,0,1,2 的命中率

#使用模型進行預(yù)測
knnModel.predict([[0.1, 0.2, 0.3, 0.4]])      

參考文獻
作者A:ken

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容