knn--k-nearestneighbor可以是是分類法中最簡單的演算法了。
大致的idea為:找出k各跟新資料點最像的點,看這些點主要屬於哪類,那麼新資料點也就屬於哪類的了。
其偽**如下:
1. 拿到乙個新的資料點
2. 計算其到training set中每個點的距離
3. 對距離排序
4. 對距離新資料點最近的前k個點的label數進行統計,出現次數最多的種類則為新資料點的label
在本篇隨筆中,我們最要對距離函式進行討論。
標準的knn是使用二範數進行計算距離的,其實我們也還可以使用其他範數(1範數~無窮範數)等範數進行距離計算。
同時,我們也可以考慮參考svm的kernel trick使用gaussian kernel來算距離。也可以考慮使用余弦函式算距離。
那麼,實際應用中我們怎麼選取合適的距離函式呢?
可以考慮是用k-fold的方法來試錯得出。
簡單的說,就是對使用以上各種距離函式的knn:把data set分成k組。重複k次,每次選第k組為training set,剩下的為testing set。
計算總的錯誤數,然後排序,找到能使錯誤數最小的距離函式。
KNN 的簡單應用
本報告在單一資料集上測試了 knn 的 k 值,尤拉距離的使用與否,歸一化資料與否對 knn 演算法結果的影響,測試資料 於 uci 機器學習資料集的 iris 資料集,由於資料量較少,採用交叉驗證的方式 10 fold cross validation 實驗結果表明,在本資料集上使用尤拉距離,不進...
KNN的優化演算法1 距離加權
參考文章 對參考文章中最後一部分說的有問題的地方進行了修改。權值加權 為每個點的距離增加乙個權重,使得距離近的點可以得到更大的權重,在此描述如何加權。該方法最簡單的形式是返回距離的倒數,比如距離d,權重1 d。有時候,完全一樣或非常接近的商品權重會很大甚至無窮大。基於這樣的原因,在距離求倒數時,在距...
8 函式的拓展
1.函式引數的預設值 2.rest引數 3.擴充套件運算子 4.嚴格模式 5.name屬性 var f v v 上面的箭頭函式等同於 var f function v 如果箭頭函式不需要引數或者需要多個引數,就使用乙個圓括號代表引數部分。var f 5 等同於 var f function var ...