k近鄰(k-nearest neighbor,knn)是一種有監督學習方法,其工作機制很簡單:在給定測試樣本時,基於某種距離(歐氏距離)度量找出訓練樣本資料集中與其距離最近的k個樣本,然後基於這個k個樣本做**,通常採用的是「投票法」,也就是說屬於哪個類別的樣本數多,就**為該樣本。
歐氏距離:當p=2時,就是我們常見的歐式距離
曼哈頓距離:當p=1時稱之為曼哈頓距離
馬氏距離:馬氏距離標識的是資料的協方差距離,是一種有效的計算兩個未知樣本集的相似度的方法,在計算的過程中考慮到features之間的特徵,而且跟尺度無關(scale-invariant)。求馬氏距離的前提是要計算出樣本集的協方差矩陣,然後利用公式:
乙個包含3類且類別標籤為1,2,3的樣本集和待測試樣本item-1,計算item-1與樣本集中的沒想的距離,並取前k個距離最小的記錄,比如k=10,統計這五條集中出現最多的類別,並把該類別作為item-1的**類別。
item-1。
得到的k個最小的距離項分別為:a-1,b-2,c-3,d-2,e-1,f-3,g-1,h-1,i-2,j-1.其中數字表示類別,字母表示記錄的feature value。
統計k=10個項中個類別的個數,類別1–5個,類別2–3個,類別3–2個。
取上述結果最大的類別1作為item-1的**類別,所以item-1 的類別為1.
def
loadfile
(filename):
rawdata =
file = open(filename,'rb')
reader = csv.reader(file)
for line in reader:
rawdata.pop(0)
rawdata = array(rawdata).astype(int32)
return rawdata
defknnclassifier
(unclassifieditem,traindata,trainlabels,k):
datasetsize = traindata.shape[0]
diffmat = tile(unclassifieditem, (datasetsize,1)) - traindata
sqdiffmat = (diffmat)**2
sqdistances = sqdiffmat.sum(axis=1)
distances = sqdistances**0.5
sorteddistindicies = distances.argsort()
classcount={}
for i in range(k):
voteilabel = trainlabels[sorteddistindicies[i]]
classcount[voteilabel] = classcount.get(voteilabel,0) + 1
sortedclasscount = sorted(classcount.iteritems(), key=operator.itemgetter(1), reverse=true)
return sortedclasscount[0][0]
defdigitclassify
(testdata,testdatalable,traindata,trainlable,k):
m = testdata.shape[0]
result = [['imageid','label']]
errorcount=0
for i in range(m):
classifyresult =knnclassifier(testdata[i],traindata,trainlable,k)
if(classifyresult !=testdatalable[i,1]):
errorcount+=1
return errorcount/float(m)
資料探勘十大經典演算法
最近想看看資料探勘是個什麼東西,因此特別的關注了下,首先看看資料探勘包含哪些演算法,網上找到了十大經典演算法 01.c4.5 是機器學習演算法中的一種分類決策樹演算法,其核心演算法是 id3演算法 02.k means演算法 是一種聚類演算法。03.svm 一種 監督式學習 的方法,廣泛運用於統計分...
資料探勘十大經典演算法
1 c4.5 2 k means 3 svm 4 apriori 5 em 6 pagerank 7 adaboost 8 knn 9 bayes 10 cart 1 c4.5 計算增益率 step1 計算資料集d的熵 單位為位元 info d step2 計算每個屬性的熵info x d step...
十大經典資料探勘演算法
c4.5演算法 機器學習演算法中的乙個分類決策樹演算法 cart 分類與回歸樹 c4.5與cart都是決策樹演算法 id3用資訊增益,c4.5用資訊增益率,cart用gini係數 knn 樸素貝葉斯 bayes 在眾多的分類模型中,應用最為廣泛的兩種分類模型是決策樹模型 decision tree ...