算法1-KNN算法及其matlab實現

2022-01-21 matlab入門到入門

收錄於話題 #matlab進階教程 3個

一、算法概述

1、kNN算法又稱為k近鄰分類(k-nearest neighbor classification)算法。kNN算法則是從訓練集中找到和新數據最接近的k條記錄,然後根據他們的主要分類來決定新數據的類別。該算法涉及3個主要因素:訓練集、距離或相似的衡量、k的大小。

計算步驟如下:

1)算距離:給定測試對象,計算它與訓練集中的每個對象的距離

2)找鄰居:圈定距離最近的k個訓練對象,作為測試對象的近鄰

3)做分類:根據這k個近鄰歸屬的主要類別,來對測試對象分類

2、距離或相似度的衡量

什麼是合適的距離衡量?距離越近應該意味著這兩個點屬於一個分類的可能性越大。距離衡量包括歐式距離、夾角餘弦等。

3、類別的判定

投票決定:少數服從多數,近鄰中哪個類別的點最多就分為該類。

加權投票法:根據距離的遠近,對近鄰的投票進行加權,距離越近則權重越大(權重為距離平方的倒數)

clear;clc;K=3;trainData = [1.0,2.0;    1.2,0.1;    0.1,1.4;    0.3,3.5];trainClass = [1,1,2,2];testData = [0.5,2.3];
[N,M]=size(trainData);%計算訓練數據集與測試數據之間的歐氏距離distdist=zeros(N,1);for i=1:N dist(i,:)=norm(trainData(i,:)-testData);end%將dist從小到大進行排序[Y,I]=sort(dist,1);%將訓練數據對應的類別與訓練數據排序結果對應trainClass=trainClass(I);%確定前K個點所在類別的出現頻率classNum=length(unique(trainClass));%取集合中的單值元素的個數labels=zeros(1,classNum);for i=1:K j=trainClass(i); labels(j)=labels(j)+1;end%返回前K個點中出現頻率最高的類別作為測試數據的預測分類[~,idx]=max(labels);fprintf('該測試數據屬於類 %d\n',idx);
%% f方法二更簡單labels=trainClass;idx=mode(labels(1:K));%mode函數求眾數fprintf('該測試數據屬於類 %d ',idx);

相關焦點

  • KNN算法(三)-sklearn實現
    上篇講到KNN算法的實例。在python中sklearn庫可直接實現KNN算法。本篇介紹運用sklearn庫實現KNN算法。
  • 圖像識別之KNN算法的理解與應用
    本文首先講解KNN算法的原理,接著講解Opencv中的KNN算法模塊,然後再使用Opencv中的KNN算法模塊對手寫數字圖像進行識別。KNN算法主要包含以下幾個要素:1. 訓練樣本。訓練樣本就是預先準備好的數據集,該數據集必須包含所有可能的數據類別,而且數據集中的每個數據都有一個唯一的標籤,用來標識該數據所屬的類別。
  • 聚類(三):KNN算法(R語言)
    k最臨近(KNN)算法是最簡單的分類算法之一,屬於有監督的機器學習算法。
  • KNN算法中的K有多重要
    該模型在訓練組上實現了很高的精度,但對於新的、以前看不到的數據點,該模型的預測能力較差。因此,我們很可能最終得到一個過擬合的模型。如果k選擇得太大,模型就會變得過於泛化,無法準確預測訓練和測試集中的數據點。這種情況被稱為欠擬合。我們現在創建兩個不同的knn模型,k值為1和50。然後創建預測的散點圖,以查看差異。第一步是將數據集拆分為測試子集。
  • R語言實現K最近鄰算法(KNN)
    例如西紅柿和四季豆之間的距離為:d(西紅柿,四季豆)=√(6−3)2+(4−7)2=4.2d(西紅柿,四季豆)=(6−3)2+(4−7)2=4.2根據以上算法,我們分別計算了西紅柿和葡萄、四季豆、堅果、橙子之間的距離,分別是2.2、4.2、3.6、1.4。我們發現西紅柿和橙子之間的距離最短,那麼我們據此認為西紅柿是一種水果。
  • R語言--鄰近算法KNN
    ❝KNN(k鄰近算法)是機器學習算法中常見的用於分類或回歸的算法。它簡單,訓練數據快,對數據分布沒有要求,使它成為機器學習中使用頻率較高的算法,並且,在深度學習大行其道的今天,傳統可解釋的簡單模型在工業大數據領域的應用更為廣泛。本文介紹KNN算法的基本原理和用R代碼實現。
  • 機器學習(二)-------KNN算法的sklearn KNN實踐
    一.Skelarn KNN參數概述要使用sklearnKNN算法進行分類,我們需要先了解sklearnKNN算法的一些基本參數,那麼這節就先介紹這些內容吧。參數選項如下: • 'brute' :蠻力實現 • 'kd_tree':KD 樹實現 KNN • 'ball_tree':球樹實現 KNN • 'auto':默認參數,自動選擇合適的方法構建模型不過當數據較小或比較稀疏時,無論選擇哪個最後都會使用 'brute' - leaf_size:如果是選擇蠻力實現,那麼這個值是可以忽略的,當使用
  • Sk-learn之KNN算法綜合實戰
    模型怎麼實現的理論上我們不需要關注。這樣我們就可以把主要的精力放在思考如何提高模型的預測的精度這個問題上。    sklearn中也提供一些標準化的操作來提高模型精度,例如數據歸一化、GridsearchCV尋找最優參數等。這個就是我們下面的案例將要用到的技術。
  • 蟻群算法即相關代碼實現詳解—matlab之智能算法
    蟻群算法即相關代碼實現詳解 一.算法背景 蟻群算法是近年來剛剛誕生的隨機優化方法,它是一種源於大自然的新的仿生類算法.由義大利學者Dorigo最早提出,螞蟻算法主要是通過螞蟻群體之間的信息傳遞而達到尋優的目的,最初又稱蟻群優化方法(Ant Colony
  • 機器學習之KNN分類算法介紹: Stata和R同步實現(附數據和代碼)
    1 KNN算法原理KNN作為機器學習中的常見算法,同時適用於分類和回歸。1.1 分類算法原理這裡x和y代表兩個樣本觀測值向量,表示x樣本的第i個特徵變量i的具體取值,表示y樣本第i個特徵變量的具體取值。KNN分類算法原理:某個對象的分類結果由其最近的N(通常是1到5)個鄰居決定,也叫「vote,投票表決」。即K個最近的鄰居中,頻數最高的類別,就認為是我們要考慮的那個對象的類別。
  • 基於matlab的RBFNN的kmeans算法研究
    本文首先對kmeans算法進行深入的研究和學習,簡單介紹了其思想及其具體操作步驟,因其算法簡單、快速高效 的處理大數據集而被人們廣泛應用。但其初始聚類中心是隨機選擇的,所以結果具有不確定性。利用層次聚類的算法對其進行改進, 使其初始聚類中心穩定,彌補了kmeans算法的缺點。
  • kNN算法量化交易初試
    這篇文章主要介紹一下kNN分類算法在Python3上的實現,根據自己的一些粗淺的想法做了一個探索性的實驗。本篇內容框架kNN算法簡介kNN與股票漲跌分類數據獲取基於Python的算法實現ConclusionkNN算法簡介kNN算法的基本原理其實就是將訓練集和測試集的標籤數據同時放到一個特徵空間當中,特徵空間的維度n也是我們數據集特徵的個數。
  • 教程 | matlab實現kmeans聚類算法
    kmeans聚類算法是一種簡單實用的聚類算法,matlab自帶函數kmeans可直接對數據進行kmeans聚類。
  • 蟻群算法簡介及matlab實現
    根據仿生學家的研究結果,螞蟻憑藉路徑尋優的能力能夠找到蟻巢與食物之間的最短路徑,其原理在於:螞蟻在所經過的路徑上留下一種揮發性分泌物(pheromone,以下稱為信息素),信息素隨著時間的推移會逐漸揮發消失.螞蟻在覓食過程中能夠感知這種物質的存在及其強度,並以此來指導自己的運動方向,傾向於朝著這種物質強度高的方向移動,即選擇該路徑的概率與當時這條路徑上該物質的強度成正比.信息素強度越高的路徑
  • 9種常用的機器學習算法實現
    關於算法的原理知乎上有很多精彩的回答,這裡不會贅述,僅給出代碼的實現與可視化。具體原理參考:樸素貝葉斯算法原理小結 - 劉建平Pinard,下面給出代碼的實現。準備數據knn_X_train, knn_y_train = make_classification(n_features=2, n_redundant=0, n_informative=2, random_state=1, n_clusters_per_class=1, n_classes=4)# 2.
  • 機器學習:基於Knn算法的用戶屬性判斷方案設計
    本文作者通過Knn算法進行了一次用戶判斷預測的流程,文章為作者根據自身經驗所做出的總結,希望通過此文能夠加深你對Knn算法的認識。knn算法簡介K最近鄰(k-Nearest Neighbor,KNN)分類算法,是一個理論上比較成熟的方法,也是最簡單的機器學習算法之一。
  • 圖像識別之KNN算法的理解與應用(2)
    在上一篇文章中,我們介紹了KNN算法的原理,並詳細闡述了使用Opencv的KNN算法模塊對手寫數字圖像進行識別,發現識別的準確率還是比較高的,達到
  • 數據驅動優化:如何利用 KNN 算法驅動產品優化?
    本文主要是knn算法原理的介紹,以及在它在網際網路行業中的具體應用,後續會介紹這個算法的具體實現(R 語言和python 語言)。一、knn 算法原理:現在假如有一個樣本, 樣本中的每一個叫做個體, 我們已經知道這些個體所屬的類別,現在有一個新的未知類別的個體,我們可以通過計算它與樣本中所有個體的相似距離,然後找出與它具體最小的k個個體, 這k個個體最多的類別就是這個新的個體的預測的類別。
  • matlab優化算法之遺傳算法(含代碼)【數學建模】
    ,今天我們要學習的遺傳算法則是通過模擬生物學中物種的進化過程來實現的!二、遺傳算法的實現2.1 具體實現步驟:(1) 根據具體問題確定可行解域,確定一種編碼方法,能用數值串或字符串表示 可行解域的每一解
  • MATLAB遺傳算法及其實現
    >控制參數設定等5個要素組成了遺傳算法的核心內容。遺傳算法通過選擇過程體現這一思想,進行選擇的原則是適應性強的個體為下一代貢獻一個或多個後代的概率大。選擇實現了達爾文的適者生存原則。(5)交叉:交叉操作是遺傳算法中最主要的遺傳操作。通過交叉操作可以得到新一代個體,新個體組合了其父輩個體的特性。交叉體現了信息交換的思想。