分類算法之K近鄰算法(KNN)

2021-01-07 IT路人乙

算法思路

K最近鄰(k-Nearest Neighbor)算法是比較簡單的機器學習算法。它採用測量不同特徵值之間的距離方法進行分類。思路: 如果一個樣本在特徵空間中的k個最近鄰(最相似)的樣本中的大多數都屬於某一個類別,則該樣本也屬於這個類別。

算法分析

這裡我以javaml庫為例分析算法實現步驟。首先,引入javaml的庫依賴,我使用maven管理依賴,pom配置如下

<dependency>

<groupId>net.sourceforge</groupId>

<artifactId>javaml</artifactId>

<version>0.1.5</version>

</dependency>

簡要描述下該庫的代碼結構

K近鄰算法實現代碼為KNearestNeighbors類的classDistribution(Instanceinstance)方法,關鍵代碼如下

@Override

public Map<Object, Double> classDistribution(Instance instance) {

/* Get nearest neighbors */

// 1) 獲取K個近鄰樣本點;

Set<Instance> neighbors = training.kNearest(k, instance, dm);

/* Build distribution map */

HashMap<Object, Double> out = new HashMap<Object, Double>();

// 2) 初始化所有分類的樣本點個數為0;

for (Object o : training.classes())

out.put(o, 0.0);

// 3) 統計K個近鄰樣本點中各個分類的樣本點的數量;

for (Instance i : neighbors) {

out.put(i.classValue(), out.get(i.classValue()) + 1);

}

double min = k;

double max = 0;

// 4) 確定所有分類中樣本點數量的最大值和最小值;

for (Object key : out.keySet()) {

double val = out.get(key);

if (val > max)

max = val;

if (val < min)

min = val;

}

/* Normalize distribution map */

// 5) 統計未知樣本屬於各個分類的概率(0-1之間)。

for (Object key : out.keySet()) {

out.put(key, (out.get(key) - min) / (max - min));

}

return out;

}

堅持學習,每天進步一點點,讓自己變得更好

相關焦點

  • 人工智慧之K近鄰算法(KNN)
    前言:人工智慧機器學習有關算法內容,請參見公眾號「科技優化生活」之前相關文章。人工智慧之機器學習主要有三大類:1)分類;2)回歸;3)聚類。今天我們重點探討一下K近鄰(KNN)算法。^_^本文引用地址:http://www.eepw.com.cn/article/201806/381808.htm  K近鄰KNN(k-Nearest Neighbor)算法,也叫K最近鄰算法,1968年由 Cover 和 Hart 提出,是機器學習算法中比較成熟的算法之一。K近鄰算法使用的模型實際上對應於對特徵空間的劃分。
  • 機器學習算法推導&實現——k近鄰和kd樹實現
    KNN算法簡單、直觀,是最著名的「惰性學習」算法,不具有顯示的學習過程。K近鄰推導與kd樹過程我們可以用文字簡單描述下KNN算法:給定一個訓練數據集T,對於新的目標實例x,我們在訓練集T中找到與實例x最鄰近的k個實例,這k個實例大多屬於哪一類,目標實例x就被分為這個類。
  • AI產品經理必懂算法:k-近鄰(KNN)算法
    作為想在AI領域長期發展的PM同學來說,對算法有一個初步、通識的了解是非常有必要的。今天我們就從一個最為簡單、易懂的「k-近鄰(KNN)算法」聊起,KNN屬於監督學習算法,即可以用於分類,也可以用於回歸,後續還會逐步為大家介紹一些常用的其他算法。
  • 【機器學習基礎】數學推導+純Python實現機器學習算法3:k近鄰
    ,k 近鄰在眾多有監督機器學習算法中算是一種比較獨特的方法。說它獨特,是因為 k 近鄰不像其他模型有損失函數、有優化算法、有訓練過程。對於給定的實例數據和實例數據對應所屬類別,當要對新的實例進行分類時,根據這個實例最近的 k 個實例所屬的類別來決定其屬於哪一類。所以相對於其它機器學習模型和算法,k 近鄰總體上而言是一種非常簡單的方法。
  • 機器學習之KNN分類算法介紹: Stata和R同步實現(附數據和代碼)
    在Stata和R(knn3函數)中,默認的距離指歐式距離(Euclidean Distance,記為L2)。近年來計量經濟學也已經把KNN納入,當成一種非參估計的方法。KNN可看成一種基於實例的學習算法,通過局部近似及推遲所有計算到分類之後,故也被稱為「惰性學習算法」。KNN分類通過最近的k個近鄰樣本的類別,來推測目標樣本的類別。
  • KNN算法中的K有多重要
    K-最近鄰(KNN)是一種有監督的機器學習算法,可用於解決分類和回歸問題。它基於一個非常簡單的想法,數據點的值由它周圍的數據點決定。考慮的數據點數量由k值確定。因此,k值是算法的核心。KNN分類器根據多數表決原則確定數據點的類別。如果k設置為5,則檢查5個最近點的類別。也可以根據多數類進行回歸預測,同樣,KNN回歸取5個最近點的平均值。
  • 常見面試算法:k-近鄰算法原理與python案例實現
    近鄰(kNN, k-NearestNeighbor)算法是一種基本分類與回歸方法,我們這裡只討論分類問題中的 k-近鄰算法。k 近鄰算法的輸入為實例的特徵向量,對應於特徵空間的點;輸出為實例的類別,可以取多類。k 近鄰算法假設給定一個訓練數據集,其中的實例類別已定。分類時,對新的實例,根據其 k 個最近鄰的訓練實例的類別,通過多數表決等方式進行預測。因此,k近鄰算法不具有顯式的學習過程。k 近鄰算法實際上利用訓練數據集對特徵向量空間進行劃分,並作為其分類的「模型」。
  • R語言實現K最近鄰算法(KNN)
    文章目錄理解近鄰分類第一步收集數據第二步探索和準備數據第三步基於數據訓練模型第四步評估模型的性能
  • R語言--鄰近算法KNN
    ❝KNN(k鄰近算法)是機器學習算法中常見的用於分類或回歸的算法。它簡單,訓練數據快,對數據分布沒有要求,使它成為機器學習中使用頻率較高的算法,並且,在深度學習大行其道的今天,傳統可解釋的簡單模型在工業大數據領域的應用更為廣泛。本文介紹KNN算法的基本原理和用R代碼實現。
  • 教你學Python26-knn臨近算法
    KNN 概述k-近鄰(kNN, k-NearestNeighbor)算法是一種基本分類與回歸方法,我們這裡只討論分類問題中的 k-近鄰算法。一句話總結:近朱者赤近墨者黑!工作原理: 存在一個樣本數據集合,也稱作為訓練樣本集,並且樣本集中每個數據都存在標籤,即我們知道樣本集中每一個數據與所屬分類的對應關係。輸入沒有標籤的新數據後,將新的數據的每個特徵與樣本集中數據對應的特徵進行比較,然後算法提取樣本最相似數據(最近鄰)的分類標籤。一般來說,我們只選擇樣本數據集中前k個最相似的數據,這就是k-近鄰算法中k的出處,通常k是不大於20的整數。
  • 使用K-近鄰算法構建鳶尾屬分類器
    第一種分類算法稱為監督學習,有樣本數據可供參考;第二種分類方法為無監督學習,沒有樣本數據參考,完全需要算法自己完成分類。在這個案例中,主要設計監督學習的分類算法。監督學習算法需要有樣本數據為算法提供參考,建立樣本數據是鳶尾屬分類器的第一步工作。
  • 【陸勤踐行】用R做K近鄰(KNN)
  • Python:機器學習-k-近鄰算法之影片分類器
    本次將介紹一個機器學習算法:k-近鄰算法,它非常有效而易於握。我們將探討如使用距離測量的方法分類。k-近鄰算法優點:精度高、對異常值不敏感、無數據輸入假定。代碼如下:createDataSet()方法:創建一個數組以及對應的標籤classifier()方法:inX: 用於分類的輸入數組
  • 實例最簡,帶你輕鬆進階機器學習K最近鄰算法
    前言K最近鄰(k-NearestNeighbor,K-NN)算法是一個有監督的機器學習算法,也被稱為K-NN算法,由Cover和Hart於1968年提出。可以用於解決分類問題和回歸問題。此外,作為一個理論上比較成熟的機器學習算法,關於K近鄰算法的介紹有很多,比如算法執行的步驟、應用領域等。
  • 從零開始用Python實現k近鄰算法(附代碼、數據集)
    本文將帶領讀者理解KNN算法在分類問題中的使用,並結合案例運用Python進行實戰操作。注意:本文於2014年10月10日首發,並於2018年3月27日更新引言進入數據分析領域的四年來,我構建的模型的80%多都是分類模型,而回歸模型僅佔15-20%。這個數字會有浮動,但是整個行業的普遍經驗值。
  • 聚類(三):KNN算法(R語言)
    k最臨近(KNN)算法是最簡單的分類算法之一,屬於有監督的機器學習算法。
  • K近鄰算法:以"同類相吸"解決分類問題!
    KNN(k-nearest neighbors)又叫做K近鄰,是機器學習中相對簡單好理解的算法,並且它是個幾乎不需要訓練就可以得到預測結果的模型。我們常說物以類聚,人以群分,大家之所以能夠成為朋友,多少是因為身上的某些特質是相近的,K近鄰算法藉助的就是這個思想。
  • 《機器學習實戰》學習筆記:K-近鄰算法入門及實戰|萬字長文
    一般來說,我們只選擇樣本數據集中前k個最相似的數據,這就是k-近鄰算法中k的出處,通常k是不大於20的整數。最後,選擇k個最相似數據中出現次數最多的分類,作為新數據的分類。舉個簡單的例子,我們可以使用k-近鄰算法分類一個電影是愛情片還是動作片。
  • 數據科學經典算法 KNN 已被嫌慢,ANN 比它快 380 倍
    在模式識別領域中,K - 近鄰算法(K-Nearest Neighbor, KNN)是一種用於分類和回歸的非參數統計方法。K - 近鄰算法非常簡單而有效,它的模型表示就是整個訓練數據集。就原理而言,對新數據點的預測結果是通過在整個訓練集上搜索與該數據點最相似的 K 個實例(近鄰)並且總結這 K 個實例的輸出變量而得出的。
  • 機器學習(二)-------KNN算法的sklearn KNN實踐
    一.Skelarn KNN參數概述要使用sklearnKNN算法進行分類,我們需要先了解sklearnKNN算法的一些基本參數,那麼這節就先介紹這些內容吧。KNN代碼實例KNN算法算是機器學習裡面最簡單的算法之一了,我們來sklearn官方給出的例子,來看看KNN應該怎樣使用吧:數據集使用的是著名的鳶尾花數據集,用KNN來對它做分類。我們先看看鳶尾花長的啥樣。