日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab knn实现,Matlab之KNN实现

發布時間:2024/9/27 循环神经网络 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab knn实现,Matlab之KNN实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.?????算法流程

1)??????通過Matlab產生高斯分布產生兩類數據,并標明類別

2)??????數據初始化:設置K=某個常數(一般為奇數)

3)??????對于每個測試數據,

計算其到兩類數據的所有點的距離

對于上述求得的距離,選出K個最小的,

檢測這選出的K個值中屬于類別1和類別2的個數

If Cnt1>Cnt2

屬于類別1;

Else

屬于類別2;

2、實驗代碼:

clear all;

close all;

clc;

%%第一個類數據和標號

mu1=[0 0]; ?%均值

S1=[0.3 0;0 0.35]; ?%協方差

data1=mvnrnd(mu1,S1,100); ? %產生高斯分布數據

plot(data1(:,1),data1(:,2),'+');

label1=ones(100,1); %產生100行1列的單位矩陣

hold on;

%%第二個類數據和標號

mu2=[1.25 1.25];

S2=[0.3 0;0 0.35];

data2=mvnrnd(mu2,S2,100);

plot(data2(:,1),data2(:,2),'ro');

label2=label1+1; %產生100行1列的全為2的矩陣

data=[data1;data2];%數據合并

label=[label1;label2];

grid on;

K=11; ? %兩個類,K取奇數才能夠區分測試數據屬于那個類

%測試數據,KNN算法看這個數屬于哪個類

for ii=-3:0.1:3

for jj=-3:0.1:3

test_data=[ii jj]; ?%測試數據

label=[label1;label2];

%%下面開始KNN算法,顯然這里是11NN。

%求測試數據和類中每個數據的距離,歐式距離(或馬氏距離)

distance=zeros(200,1); %產生200行1列的零矩陣

for i=1:200

distance(i)=sqrt((test_data(1)-data(i,1)).^2+(test_data(2)-data(i,2)).^2); %(xi-X)2+(yj-Y)2

end

%選擇排序法,只找出最小的前K個數據,對數據和標號都進行排序

for i=1:K

ma=distance(i);

for j=i+1:200

if distance(j)

ma=distance(j);

label_ma=label(j);

tmp=j;

end

end

distance(tmp)=distance(i); ?%排數據

distance(i)=ma;

label(tmp)=label(i); ? ? ? ?%排標號,主要使用標號

label(i)=label_ma;

end

cls1=0; %統計類1中距離測試數據最近的個數

for i=1:K

if label(i)==1

cls1=cls1+1;

end

end

cls2=K-cls1; ? ?%類2中距離測試數據最近的個數

if cls1>cls2

plot(ii,jj); ? ? %屬于類1的數據畫小黑點

end

end

end

3、結果說明

本算法的測試數據是坐標軸上的點,范圍是x[-3,3], y[-3,3];

最終結果一類用黑點表示,一類用空白表示

4、算法結果:

總結

以上是生活随笔為你收集整理的matlab knn实现,Matlab之KNN实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。