99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2020-08-24 閱讀量: 982
數(shù)據(jù)分析Python機(jī)器學(xué)習(xí)

K近鄰算法

K最近鄰(kNN,k-Nearest Neighbor):

工作原理:存在一個(gè)樣本數(shù)據(jù)集合,也稱(chēng)作為訓(xùn)練樣本集,并且樣 本集中每個(gè)數(shù)據(jù)都存在標(biāo)簽,即每一個(gè)數(shù)據(jù)與所屬分類(lèi)的一一對(duì)應(yīng) 關(guān)系。輸入沒(méi)有標(biāo)簽的新數(shù)據(jù)后,將新的數(shù)據(jù)的每個(gè)特征與樣本集 中數(shù)據(jù)對(duì)應(yīng)的特征進(jìn)行比較,然后算法提取樣本最相似數(shù)據(jù)(最近鄰) 的分類(lèi)標(biāo)簽。

一般來(lái)說(shuō),只選擇樣本數(shù)據(jù)集中前k個(gè)最相似的數(shù)據(jù),這就是k-近鄰 算法中k的出處,通常k是不大于20的整數(shù)。最后,選擇k個(gè)最相似數(shù) 據(jù)中出現(xiàn)次數(shù)最多的分類(lèi),作為新數(shù)據(jù)的分類(lèi)。

距離度量:

歐氏距離(最常用),曼哈頓距離,馬氏距離,夾角余弦(越接近1,越相似)

k-近鄰算法步驟:

計(jì)算已知類(lèi)別數(shù)據(jù)集中的點(diǎn)與當(dāng)前點(diǎn)之間的距離;

按照距離遞增次序排序;

選取與當(dāng)前點(diǎn)距離最小的k個(gè)點(diǎn);

確定前k個(gè)點(diǎn)所在類(lèi)別的出現(xiàn)頻率;

返回前k個(gè)點(diǎn)所出現(xiàn)頻率最高的類(lèi)別作為當(dāng)前點(diǎn)的預(yù)測(cè)分類(lèi)

k-近鄰算法實(shí)戰(zhàn):數(shù)據(jù)歸一化

如果不同特征變量的量綱級(jí)別相差較大且在建模時(shí)相互影響,我們通常會(huì)對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,該手段稱(chēng)為數(shù)據(jù)標(biāo)準(zhǔn)化或數(shù)據(jù)歸一化。

常見(jiàn)方法有min—max標(biāo)準(zhǔn)化(也稱(chēng)離差標(biāo)準(zhǔn)化):newValue = (oldValue - min) / (max - min)

Z—score標(biāo)準(zhǔn)化(也稱(chēng)均值歸一化)

超參數(shù)優(yōu)化

KNN中的k是一個(gè)超參數(shù),需要人為輸入。從KNN原理中可知,k值對(duì) 算法有極大的影響。

如果選擇的k值較小,就相當(dāng)于較小的鄰域中的訓(xùn)練實(shí)例進(jìn)行預(yù)測(cè), 這時(shí)候只有與輸入實(shí)例較近的(相似的)訓(xùn)練實(shí)例才會(huì)對(duì)預(yù)測(cè)結(jié)果 起作用,但缺點(diǎn)是預(yù)測(cè)結(jié)果會(huì)對(duì)近鄰的實(shí)例點(diǎn)非常敏感。如果鄰近 的實(shí)例點(diǎn)恰好是噪聲,預(yù)測(cè)就會(huì)出錯(cuò)。相反地,如果選擇的k值較大, 就相當(dāng)于較大的鄰域中的訓(xùn)練實(shí)例進(jìn)行預(yù)測(cè)。這時(shí)與輸入實(shí)例較遠(yuǎn) 的(不相似的)訓(xùn)練實(shí)例也會(huì)對(duì)預(yù)測(cè)起作用,使預(yù)測(cè)發(fā)生錯(cuò)誤。

交叉驗(yàn)證優(yōu)化超參數(shù)

模型每次使用不同的訓(xùn)練集和測(cè)試集,有不同的測(cè)試結(jié)果

機(jī)器學(xué)習(xí)追求的是模型在未知數(shù)據(jù)集上的效果,通過(guò)交叉驗(yàn)證進(jìn)一 步提高模型的泛化能力

KNN總結(jié):

一種非參數(shù)、惰性學(xué)習(xí)方法,導(dǎo)致預(yù)測(cè)時(shí)速度慢

當(dāng)訓(xùn)練樣本集較大時(shí),會(huì)導(dǎo)致其計(jì)算開(kāi)銷(xiāo)高

樣本不平衡的時(shí)候,對(duì)稀有類(lèi)別的預(yù)測(cè)準(zhǔn)確率低

KNN模型的可解釋性不強(qiáng)


代碼實(shí)現(xiàn):

例子:鳶尾花分類(lèi)

import numpy as np

from sklearn import datasets

from sklearn.neighbors import KNeighborsClassifier

from sklearn.model_selection import train_test_split

# 導(dǎo)入鳶尾花數(shù)據(jù)并查看數(shù)據(jù)特征

iris = datasets.load_iris()

print('數(shù)據(jù)量',iris.data.shape)

# 拆分屬性數(shù)據(jù)

iris_X = iris.data

# 拆分類(lèi)別數(shù)據(jù)

iris_y = iris.target


iris_train_X , iris_test_X, iris_train_y ,iris_test_y = train_test_split(iris_X, iris_y, test_size=0.2,random_state=0)

knn = KNeighborsClassifier(n_neighbors=6)

knn.fit(iris_train_X, iris_train_y)

predict_result=knn.predict(iris_test_X)

print('預(yù)測(cè)結(jié)果',predict_result)

# 計(jì)算預(yù)測(cè)的準(zhǔn)確率

print('預(yù)測(cè)準(zhǔn)確率',knn.score(iris_test_X, iris_test_y)) #knn.score()涵義先做預(yù)測(cè),再比較


回歸

X = [[0], [1], [2], [3]]

y = [0, 0, 1, 1]

from sklearn.neighbors import KNeighborsRegressor

neigh = KNeighborsRegressor(n_neighbors=2)

neigh.fit(X, y)

print(neigh.predict([[1.5]]))












73.4504
0
關(guān)注作者
收藏
評(píng)論(0)

發(fā)表評(píng)論

暫無(wú)數(shù)據(jù)
推薦帖子