knn-------k-鄰近演算法
1.knn是non-parametric分類器,既不做分布式假設,直接從資料估計概率密度;
2.knn不適用於高維資料
優點:1.無需估計引數,無需訓練;
2.特別適合於多分類問題(物件具有多個標籤)。
缺點:1.當樣本容量不平衡是,輸入有個新樣本,該樣本的k個鄰值中大容量樣本占多數,對分類不利;
2.計算量過大,需要計算待分類文字到每個樣本的距離。
改進辦法:
1.實現對樣本屬性進行適當刪減,刪除對結果影響較小的屬性;
2.對距離加權,採取和樣本距離小的待分類文字距離權重大。
演算法偽**:
1.計算已知類別資料集中的點與當前點之間的距離;
2.按照距離遞增次排序;
3.選取與當前點距離最小的k個點;
4.確定前k個點所在類別的出現頻率
5.返回前k個點出現頻率最高的類別作為當前點的**分類
python**實現knn演算法
def knn(inx, dataset, labels, k):
datasetsize = dataset.shape[0] #shape[0]讀取陣列一維長度,既知道有多少個陣列
diffmat = tile(inx, (datasetsize,1)) - dataset #計算歐氏距離
sqdiffmat = diffmat**2
sqdistances = sqdiffmat.sum(axis=1)
distances = sqdistances**0.5
sorteddistindicies = distances.argsort() #返回陣列值從小到大的索引值
classcount={}
for i in range(k): #將labels對應相應的點
voteilabel = labels[sorteddistindicies[i]]
classcount[voteilabel] = classcount.get(voteilabel,0) + 1
sortedclasscount = sorted(classcount.iteritems(), key=operator.itemgetter(1), reverse=true) #排序,選出k個距離最小的值
return sortedclasscount[0][0]
inx:用於分類的輸入向量。即將對其進行分類。
dataset:訓練樣本集
labels:標籤向量
k:k值
機器學習演算法 KNN演算法
knn演算法原理 knn k nearest neighbor 最鄰近分類演算法是資料探勘分類 classification 技術中最簡單的演算法之一,其指導思想是 近朱者赤,近墨者黑 即由你的鄰居來推斷出你的類別。knn最鄰近分類演算法的實現原理 為了判斷未知樣本的類別,以所有已知類別的樣本作為參...
機器學習 演算法 KNN
參考 我感覺knn是最簡單的乙個機器學習演算法,實現很簡單,效果也一般般 就是算個euclideam distance,還有一些可以優化的地方,比如可以加權,第二篇文章提到了 python 如下 coding utf 8 created on aug 30,2013 author blacklaw ...
機器學習 KNN 演算法
一 主要目的 在樣本空間中,找到與待估計的樣本最臨近的k個鄰居,用這幾個鄰居的類別來估計待測樣本的類別 二 適用性 樣本容量比較大的類域的自動分類,而樣本容量較小的類域則容易誤分。尤其適用於樣本分類邊界不規則的情況 三 不足 1 當樣本不平衡時,比如乙個類的樣本容量很大,其他類的樣本容量很小,輸入乙...