K近鄰(KNN)

KNN概念

kNN算法又稱為k最近鄰(k-nearest neighbor classification)分類算法脐帝。所謂的k最近鄰,就是指最接近的k個鄰居(數(shù)據(jù)),即每個樣本都可以由它的K個鄰居來表達(dá)。
kNN算法的核心思想是,在一個含未知樣本的空間视事,可以根據(jù)離這個樣本最鄰近的k個樣本的數(shù)據(jù)類型來確定樣本的數(shù)據(jù)類型。

該算法涉及3個主要因素:訓(xùn)練集庆揩、距離與相似的衡量俐东、k的大小订晌;

算法步驟:

算法步驟:

step.1---初始化距離為最大值

step.2---計算未知樣本和每個訓(xùn)練樣本的距離dist

step.3---得到目前K個最臨近樣本中的最大距離maxdist

step.4---如果dist小于maxdist虏辫,則將該訓(xùn)練樣本作為K-最近鄰樣本

step.5---重復(fù)步驟2、3锈拨、4砌庄,直到未知樣本和所有訓(xùn)練樣本的距離都算完

step.6---統(tǒng)計K-最近鄰樣本中每個類標(biāo)號出現(xiàn)的次數(shù)

step.7---選擇出現(xiàn)頻率最大的類標(biāo)號作為未知樣本的類標(biāo)號

KNN的實現(xiàn)

選用“鳶尾”數(shù)據(jù)集來實現(xiàn)KNN算法

#從sklearn.datasets導(dǎo)入iris導(dǎo)入數(shù)據(jù)
from sklearn.datasets import load_iris
#使用加載器i讀取數(shù)據(jù)并且存入變量中
iris=load_iris()
#查看數(shù)據(jù)規(guī)模
print(iris.data.shape)
#查看數(shù)據(jù)說明
print(iris.DESCR)
#數(shù)據(jù)分割25%用于測試
#導(dǎo)入 train_test_split用于數(shù)據(jù)分割
from sklearn.cross_validation import train_test_split
#從使用train_test_split,利用隨機(jī)種子random_state采樣25%的數(shù)據(jù)作為測試集
X_train,X_test,Y_train,Y_test=train_test_split(iris.data,iris.target,test_size=0.25,random_state=33)
from sklearn.preprocessing import StandardScaler
from  sklearn.neighbors import KNeighborsClassifier
#對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理
ss=StandardScaler()
X_train=ss.fit_transform(X_train)
X_test=ss.transform(X_test)
#使用K近鄰分類器對測試數(shù)據(jù)進(jìn)行類別預(yù)測奕枢,預(yù)測結(jié)果儲存在變量y_predict中
knc=KNeighborsClassifier()
knc.fit(X_train,Y_train)
y_predict=knc.predict(X_test)
#使用模型自帶的評估函數(shù)進(jìn)行準(zhǔn)確性評測
print('The accuracy of K-nearest Neighbor Classifier is ',knc.score(X_test,Y_test))
#對預(yù)測結(jié)果進(jìn)行分析
from sklearn.metrics import classification_report
print(classification_report(Y_test,y_predict,target_names=iris.target_names))

數(shù)據(jù)說明如下:

鳶尾數(shù)據(jù)說明

結(jié)果如下:

預(yù)測性能評估

注:部分資料參考自范淼 李超《Python機(jī)器學(xué)習(xí)及實踐》清華大學(xué)出版社 娄昆,感謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缝彬,一起剝皮案震驚了整個濱河市萌焰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谷浅,老刑警劉巖扒俯,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奶卓,死亡現(xiàn)場離奇詭異,居然都是意外死亡撼玄,警方通過查閱死者的電腦和手機(jī)夺姑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掌猛,“玉大人盏浙,你說我怎么就攤上這事±蟛纾” “怎么了废膘?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長兔院。 經(jīng)常有香客問我殖卑,道長站削,這世上最難降的妖魔是什么坊萝? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮许起,結(jié)果婚禮上十偶,老公的妹妹穿的比我還像新娘。我一直安慰自己园细,他們只是感情好惦积,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著猛频,像睡著了一般狮崩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鹿寻,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天睦柴,我揣著相機(jī)與錄音,去河邊找鬼毡熏。 笑死坦敌,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的痢法。 我是一名探鬼主播狱窘,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼财搁!你這毒婦竟也來了蘸炸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤尖奔,失蹤者是張志新(化名)和其女友劉穎幻馁,沒想到半個月后洗鸵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡仗嗦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年膘滨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稀拐。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡火邓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出德撬,到底是詐尸還是另有隱情铲咨,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布蜓洪,位于F島的核電站纤勒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏隆檀。R本人自食惡果不足惜摇天,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望恐仑。 院中可真熱鬧泉坐,春花似錦、人聲如沸裳仆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽歧斟。三九已至纯丸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間静袖,已是汗流浹背觉鼻。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留勾徽,地道東北人滑凉。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像喘帚,于是被迫代替她去往敵國和親畅姊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容