python knn演算法練習

2021-07-10 02:27:57 字數 2176 閱讀 7695

1,準備資料:

從檔案中讀出檔案(資料來自海倫約會**例子);展示如圖

2 ,資料歸一化

主要公式:newvalue =(oldvalue-min)/(max-min)

>>> tmpmat,rangs,mins =knn.autonorm(mat)

>>> tmpmat

array([[ 0.44832535, 0.39805139, 0.56233353],

[ 0.15873259, 0.34195467, 0.98724416],

[ 0.28542943, 0.06892523, 0.47449629],

...,

[ 0.29115949, 0.50910294, 0.51079493],

[ 0.52711097, 0.43665451, 0.4290048 ],

[ 0.47940793, 0.3768091 , 0.78571804]])

3,分類knn演算法**

def    classify(testvecs,dataset,labels,k):

datasetsize =dataset.shape[0]

diffmat =tile(testvecs,(datasetsize,1)) -dataset

sqdiffmat= diffmat**2

sqdistance=sqdiffmat.sum(axis=1)

distance =sqdistance**0.5

sorteddiss=distance.argsort()

classcount = {}

for i in range(k):

votelabel =labels[sorteddiss[i]]

classcount[votelabel] = classcount.get(votelabel,0)+1.0

sortedclasscount =sorted(classcount.iteritems(),key=operator.itemgetter(1),reverse=true)

4,測試

def datingtest(int_k):

horatio =0.1

datingdatamat ,labels =file2mat('d:\python-機器學習\datingtestset2.txt')

normmat,ranges,minvals =autonorm(datingdatamat)

m=normmat.shape[0]

numtestvecs =int (m*horatio)

errorcount = 0.0

for i in range (numtestvecs):

classifyresult =classify(normmat[i,:],normmat[numtestvecs:m,:],labels[numtestvecs:m],int_k)

if(classifyresult != labels[i]):

errorcount=errorcount+1.0

print "the toal error rate is :%f" %(errorcount/float(numtestvecs))

>>> reload(knn)

>>> knn.datingtest(4)

the toal error rate is :0.030000

出錯的點在交集處

python KNN演算法運用練習之分類

問題描述 通過對細胞7個屬性的測量得分,蛋白質的定位位點,一共有8個定位點。模型選擇與評估 用cross val score實現,返回打分結果,分數越高,效能越好。引數cv,表示幾折交叉 引數scroing,常用 neg mean absolute error mae相反數 neg mean squ...

python kNN基礎演算法 分類和推薦系統

1 k 近鄰演算法是分類資料最簡單最有效的方法。2 在將資料輸入到分類器之前,必須將待處理資料的格式改變為分類器可以接受的格式。3 所有的推薦模型都可以使用這個演算法,只要將結果量化就行了,主要是要考慮權重的設計。coding utf 8 數字型聚類分析 from numpy import impo...

Python KNN 學習曲線

學習曲線的目的是選擇更好的模型引數。以最近鄰演算法為例,選取最近的多少個資料點,才能達到最優。可以控制訓練集不動,調整最近的點的個數,繪製學習曲線。import matplotlib.pyplot as plt score krange range 1,21 k值取值範圍 for i in kran...