python 常用機器學習演算法 KNN

2021-09-05 07:58:24 字數 2338 閱讀 3760

#knn

演算法核心

defknnclassify0(inx, dataset, labels, k):

#inx

待分類向量

dataset

樣本資料

labels

標籤類別k值

(前k個最近鄰居

)datasetsize = dataset.shape[0]

diffmat = tile(inx, (datasetsize,

1)) - dataset

sqdiffmat = diffmat**

2   

sqdistances = sqdiffmat.sum(

axis=1

)    distances = sqdistances**

0.5   

sorteddistindicies = distances.argsort()

#返回資料所在行標號,根據標號可以取到對應類別

labels

classcount={}    

#classcount:

foriinrange

(k):

voteilabel = labels[sorteddistindicies[i]]

classcount[voteilabel] = classcount.get(voteilabel,

0) +

1   

sortedclasscount =

sorted

(classcount.iteritems(),

key=operator.itemgetter(

1),

reverse

=true

)returnsortedclasscount[0][

0]

#

資料集轉換為矩陣

deffile2matrix(filename):  

#datingtestset2.txt

資料變為矩陣

file to matrix

fr =

open

(filename)

numberoflines =

len(fr.readlines())        

#get the number of lines in the file

returnmat = zeros((numberoflines,

3))       

#prepare matrix to return 

屬性矩陣

classlabelvector =                       

#prepare labels return  

類別標籤向量

fr =

open

(filename)

index =

0forlineinfr.readlines():

line = line.strip()

listfromline = line.split('\t')

returnmat[index,:] = listfromline[0:

3]int(listfromline[-

1]))

index +=

1returnreturnmat,classlabelvector

#

資料集歸一化

defautonorm(dataset):

minvals = dataset.min(0)

maxvals = dataset.max(0)

ranges = maxvals - minvals

normdataset

= zeros(shape(dataset))

m = dataset.shape[0]

normdataset = dataset - tile(minvals, (m,1))

normdataset = normdataset/tile(ranges, (m,

1))  

#element wise divide

returnnormdataset, ranges, minvals

Python機器學習演算法之K近鄰演算法

1.資料預處理 a.標準化 b.歸一化 2.計算歐式距離 3.3.演算法實現 import pandas as pd from sklearn.preprocessing import standardscaler from scipy.spatial import distance dc list...

機器學習python實戰 k近鄰演算法

前一周學習了一些理論的知識,雖然懂了原理,但感覺真要寫起 來還是摸不著頭腦,所以接下來的幾天都打算在 方面下一番功夫。由於接觸python不久,且能力有限,難免有些錯誤的或者理解不到位的地方,希望讀者不吝指正!k 近鄰演算法 k nn 的基本原理 存在乙個樣本資料集合,也叫訓練樣本集,並且樣本集中的...

機器學習演算法 K鄰近演算法

coding utf 8 author whf from numpy import import operator def classify inx,dataset,labels,k 得到資料集的行數 shape方法用來得到矩陣或陣列的維數 datasetsize dataset.shape 0 t...