真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

機(jī)器學(xué)習(xí)之KNN算法原理及Python實(shí)現(xiàn)方法詳解-創(chuàng)新互聯(lián)

本文實(shí)例講述了機(jī)器學(xué)習(xí)之KNN算法原理及Python實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:

創(chuàng)新互聯(lián)技術(shù)團(tuán)隊(duì)10余年來(lái)致力于為客戶提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、成都品牌網(wǎng)站建設(shè)成都全網(wǎng)營(yíng)銷(xiāo)推廣、搜索引擎SEO優(yōu)化等服務(wù)。經(jīng)過(guò)多年發(fā)展,公司擁有經(jīng)驗(yàn)豐富的技術(shù)團(tuán)隊(duì),先后服務(wù)、推廣了上1000家網(wǎng)站,包括各類(lèi)中小企業(yè)、企事單位、高校等機(jī)構(gòu)單位。

文中代碼出自《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》CH02,可參考本站:

機(jī)器學(xué)習(xí)實(shí)戰(zhàn) (Peter Harrington著) 中文版

機(jī)器學(xué)習(xí)實(shí)戰(zhàn) (Peter Harrington著) 英文原版 [附源代碼]

KNN算法介紹

KNN是一種監(jiān)督學(xué)習(xí)算法,通過(guò)計(jì)算新數(shù)據(jù)與訓(xùn)練數(shù)據(jù)特征值之間的距離,然后選取K(K>=1)個(gè)距離最近的鄰居進(jìn)行分類(lèi)判(投票法)或者回歸。若K=1,新數(shù)據(jù)被簡(jiǎn)單分配給其近鄰的類(lèi)。

KNN算法實(shí)現(xiàn)過(guò)程

(1)選擇一種距離計(jì)算方式, 通過(guò)數(shù)據(jù)所有的特征計(jì)算新數(shù)據(jù)與已知類(lèi)別數(shù)據(jù)集中的數(shù)據(jù)點(diǎn)的距離;

(2)按照距離遞增次序進(jìn)行排序,選取與當(dāng)前距離最小的k個(gè)點(diǎn);

(3)對(duì)于離散分類(lèi),返回k個(gè)點(diǎn)出現(xiàn)頻率最多的類(lèi)別作預(yù)測(cè)分類(lèi);對(duì)于回歸則返回k個(gè)點(diǎn)的加權(quán)值作為預(yù)測(cè)值;

算法關(guān)鍵

(1)數(shù)據(jù)的所有特征都要做可比較的量化


若是數(shù)據(jù)特征中存在非數(shù)值的類(lèi)型,必須采取手段將其量化為數(shù)值。例如樣本特征中包含顏色,可通過(guò)將顏色轉(zhuǎn)換為灰度值來(lái)實(shí)現(xiàn)距離計(jì)算。


(2)樣本特征要做歸一化處理


樣本有多個(gè)參數(shù),每一個(gè)參數(shù)都有自己的定義域和取值范圍,他們對(duì)距離計(jì)算的影響不一樣,如取值較大的影響力會(huì)蓋過(guò)取值較小的參數(shù)。所以樣本參數(shù)必須做一些scale處理,最簡(jiǎn)單的方式就是所有特征的數(shù)值都采取歸一化處置。


(3)需要一個(gè)距離函數(shù)以計(jì)算兩個(gè)樣本之間的距離


距離的定義:歐氏距離、余弦距離、漢明距離、曼哈頓距離等,一般選歐氏距離作為距離度量,但是這是只適用于連續(xù)變量。在文本分類(lèi)這種非連續(xù)變量情況下,漢明距離可以用來(lái)作為度量。通常情況下,如果運(yùn)用一些特殊的算法來(lái)計(jì)算度量的話,K近鄰分類(lèi)精度可顯著提高,如運(yùn)用大邊緣最近鄰法或者近鄰成分分析法。


(4)確定K的值


K值選的太大易引起欠擬合,太小容易過(guò)擬合。交叉驗(yàn)證確定K值。

KNN分類(lèi)

分類(lèi)算法常采用多數(shù)表決決定。一個(gè)缺點(diǎn)是出現(xiàn)頻率較多的樣本將會(huì)主導(dǎo)測(cè)試點(diǎn)的預(yù)測(cè)結(jié)果。解決這個(gè)缺點(diǎn)的方法之一是在進(jìn)行分類(lèi)時(shí)將K個(gè)鄰居到測(cè)試點(diǎn)的距離考慮進(jìn)去。若樣本到測(cè)試點(diǎn)距離d,則選1/d為該鄰居的權(quán)重,統(tǒng)計(jì)k個(gè)鄰居所有類(lèi)標(biāo)簽的權(quán)重和,值大的就是新數(shù)據(jù)點(diǎn)的預(yù)測(cè)類(lèi)標(biāo)簽。

KNN回歸

KNN回歸是取K個(gè)鄰居類(lèi)標(biāo)簽值得加權(quán)作為新數(shù)據(jù)點(diǎn)的預(yù)測(cè)值。

優(yōu)缺點(diǎn)

(1)KNN算法的優(yōu)點(diǎn)

  • 1.簡(jiǎn)單、有效。
  • 2.重新訓(xùn)練的代價(jià)較低(類(lèi)別體系的變化和訓(xùn)練集的變化,在Web環(huán)境和電子商務(wù)應(yīng)用中是很常見(jiàn)的)。
  • 3.計(jì)算時(shí)間和空間線性于訓(xùn)練集的規(guī)模(在一些場(chǎng)合不算太大)。
  • 4.由于KNN方法主要靠周?chē)邢薜泥徑臉颖荆皇强颗袆e類(lèi)域的方法來(lái)確定所屬類(lèi)別的,因此對(duì)于類(lèi)域的交叉或重疊較多的待分樣本集來(lái)說(shuō),KNN方法較其他方法更為適合。
  • 5.該算法比較適用于樣本容量比較大的類(lèi)域的自動(dòng)分類(lèi),而那些樣本容量較小的類(lèi)域采用這種算法比較容易產(chǎn)生誤分。

(2)KNN算法缺點(diǎn)

  • 1.KNN算法是懶散學(xué)習(xí)方法(lazy learning,基本上不學(xué)習(xí)),一些積極學(xué)習(xí)的算法要快很多。
  • 2.類(lèi)別評(píng)分不是規(guī)格化的(不像概率評(píng)分)(???)。
  • 3.輸出的可解釋性不強(qiáng),例如決策樹(shù)的可解釋性較強(qiáng)。
  • 4.該算法在分類(lèi)時(shí)有個(gè)主要的不足是,當(dāng)樣本不平衡時(shí),如一個(gè)類(lèi)的樣本容量很大,而其他類(lèi)樣本容量很小時(shí),有可能導(dǎo)致當(dāng)輸入一個(gè)新樣本時(shí),該樣本的K個(gè)鄰居中大容量類(lèi)的樣本占多數(shù)。該算法只計(jì)算最近的鄰居樣本,某一類(lèi)的樣本數(shù)量很大,那么或者這類(lèi)樣本并不接近目標(biāo)樣本,或者這類(lèi)樣本很靠近目標(biāo)樣本。無(wú)論怎樣,數(shù)量并不能影響運(yùn)行結(jié)果??梢圆捎脵?quán)值的方法(和該樣本距離小的鄰居權(quán)值大)來(lái)改進(jìn)。
  • 5.計(jì)算量較大。目前常用的解決方法是事先對(duì)已知樣本點(diǎn)進(jìn)行剪輯,事先去除對(duì)分類(lèi)作用不大的樣本。

KNN實(shí)現(xiàn)

import numpy as np
import operator
import matplotlib
import matplotlib.pyplot as plt
from os import listdir
def Create_DataSet():
 group = np.array([[1.0, 1.1],[1.0,1.0],[0,0],[0,0.1]])
 labels = ['A','A','B','B']
 return group,labels


當(dāng)前名稱(chēng):機(jī)器學(xué)習(xí)之KNN算法原理及Python實(shí)現(xiàn)方法詳解-創(chuàng)新互聯(lián)
本文鏈接:http://weahome.cn/article/gddjd.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部