(转载)简单线性分类学习机(平分最近点法)matlab实现(1)

本人新手小白,研一渣渣一名,信息与通信工程专业,本科为物联网专业。研究生期间想在网上学习一些知识,但是无从下手,于是乎想用写博客的方式来督促自己学习,我没有什么方向,还请志同道合的伙伴为我指明方向,一起讨论同时进步。这是我学习的第一个程序在matlab下可以运行,转载自百度经验,如有不妥之处请大家见谅,这是一个简单线性分类学习机(利用了平分最近点法)matlab实现https://jingyan.baidu.com/album/6079ad0eafe4b028ff86dbf8.html?picindex=3

我们假设现在又两类样本点A 类,B类,每类分别拥有5个数据样本,A类的五个坐标如图:

                                                                        

                                                                       B类的五个坐标如下:    

                                                                       

        假设现在有一个点(4,3.5)我们需要判别它具体应该属于哪一类,我们需要进行如下代码,作者已经给出详细的注释:


clc;
clear all;
%@ auther yutianduo
%   2018 July 19th
%@简单线性分类学习机matlab代码实现
%请大家互相交流学习 QQ:120371935
datax=[1 2;1.5 2;0.5 1;2 1.5;2.5 2];%属于A类的5个样本点

datay=[3 4;3.5 4;3.5 5;5 4.5;5.5 5];%属于B类的5个样本点

distance_matrix=zeros(length(datax),length(datay));%建立一个5X5的零矩阵

for i=1:length(datax)

for j=1:length(datay)

distance_matrix(i,j)=sqrt((datax(i,1)-datay(j,1))^2+(datax(i,2)-datay(j,2))^2);%求距离  欧几里得距离???哈哈哈

end
end

[c,i]=min(distance_matrix);%每列的最小值,并标注出行数

[k,j]=min(c);

data=[datax(i(1),:);datay(j,:)];%data中保存的是两类中距离最短的点的坐标A类(2.5,2)B类(3,4)
x=0:0.01:5;%抽样点

y=-1.0/((data(2,2)-data(1,2))/(data(2,1)-data(1,1)))*(x-(data(1,1)+data(2,1))/2)+(data(1,2)+data(2,2))/2;%y-y0=-1/k(x-x0)

plot(datax(:,1),datax(:,2),'r+');hold on %画出第A类数据在坐标系中的位置,并用红色+号标注出来 保持

plot(datay(:,1),datay(:,2),'go');hold on%画出第B类数据在左边系中的位置 并用绿色圆圈标注  保持

plot(x,y,'b-') ;%绘制中垂线 用蓝色短线

xlim([0,6]); %设置 x的范围

ylim([0,6]); %设置 y的范围

plot(4,3.5,'r*') %标出来你想分类的(4,3.5)这个点在坐标系中的位置

 

 


 

                                                   

如图我们将A类数据用红色加号表示,B类数据用绿色圆圈表示,图中绘制的直线将平面区域分成两部分,红色星号为所需分类的样本点,我们由图可知,他被分到了B类。这是我对这个程序的理解和解读。希望大家多多指教。这也是我的第一篇博客,希望大家给我这个小小的信通研一小白多多提供方向,小弟感激不尽。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值