KNN算法图解(MATLAB实例)
来源:互联网 发布:微信矩阵管理平台 编辑:程序博客网 时间:2024/06/05 18:30
一、概念
kNN算法的核心思想是,当一个样本空间中有未知数据类型的样本,那么就可以根据离这个样本最邻近的k个样本的数据类型来确定样本的数据类型。
多维空间的KNN算法方程式可表示为:
这里是我详细讲述KNN算法的理论帖的网址 : http://blog.csdn.net/lx85416281/article/details/40656877
二、实例
例题:‘+’ 和 ‘0’ 是两种不一样的点,假如未知点用KNN算法识别为 ‘+’ 时,就把未知点标为 黑点’ . ’ 。
设K=1时:
设 K=3时:
设 K=5时:
设K=11时:
三、MATLAB代码
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),'+'); %取data1(:,1)一个冒号是缺省表达,代表默认从1到最大的数值
label1=ones(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;
data=[data1;data2];
label=[label1;label2];
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);
for i=1:200
distance(i)=sqrt((test_data(1)-data(i,1)).^2+(test_data(2)-data(i,2)).^2);
end
%选择排序法,只找出最小的前K个数据,对数据和标号都进行排序
for i=1:K
ma=distance(i);
for j=i+1:200
if distance(j)<ma
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
- KNN算法图解(MATLAB实例)
- KNN算法(MATLAB实践)
- knn算法实例(python)
- 机器学习中的kNN算法及Matlab实例
- 机器学习中的kNN算法及Matlab实例
- KNN的matlab实现算法(转载)
- knn算法matlab实现
- KNN算法实例
- KNN的matlab实现算法
- KNN算法的matlab实现
- KNN算法matlab代码实现
- Python/matlab实现KNN算法
- KNN(K Nearest Neighbor)算法的MatLab实现
- kNN算法及实例(一)
- kNN算法及实例(二)
- KNN算法matlab函数 ClassificationKNN.fit
- 机器学习:KNN算法(MATLAB实现)
- KNN(K-Nearest Neighbor)算法Matlab实现
- 解决Xming字体太小的问题
- 对以后有点想法了
- STM32 SD bootloader实现
- hdu 5009 dp+离散化
- JAVA笔试题
- KNN算法图解(MATLAB实例)
- linux awk
- 博客的开始
- mysql innodb master_thread伪代码整理
- 第11周项目六 回文~素数(1)
- SQL2005四个排名函数(row_number、rank、dense_rank和ntile)的比较
- 最近生活
- Android开发教程--自定义接听/挂断电话功能
- python的类方法为什么要写一个self参数