%Preceptron3.m
%感知机算法(对偶形式)
%f(X)=W'*X+b
%f([X;1])=[W;b]'*[X;1] 增加维数,简化计算
%设W初始为0时,权重W是训练点的线性组合:W=Σaj*yj*Xj
%类别yi决定了Xi的系数,ai>=0,正比于被误分后权重更新的次数,可看作Xi信息量的指示
%误分判据 yi*((W'*Xi)+b)<=0变为:yi*(Σaj*yj*(Xj'*Xi)+b)<=0,ai=ai+1,b=b+yi*R^2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%可推广到多类判据:每类找(Wi,bi),决策函数c(X)=arg max(<Wi.X>+bi),值最大的即是类(Wi,bi)
%从几何角度,意味着距超平面(Wi,bi)最远的点的类与(Wi,bi)相关联!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%非线性空间分类
function Preceptron3()
%struTemp=struct('Element',[-1,1,1]','Sample',1);
%Msample=[struTemp,struTemp]';
M=[3,3;-3,3;-3,-3;3,-3;3,0]';%原空间点,通常称为属性
N=[1,1;-1,1;-1,-1;1,-1;1,0]';
Msample=[M.^2;sqrt(2)*M(1,:).*M(2,:)];%由(x1,x2)'->(x1^2,x2^2,x1*x2)映射到线性空间(寻找特征);特征正数据点
%yM=1;%类别
Nsample=[N.^2;sqrt(2)*N(1,:).*N(2,:)];%特征负数据点
%yN=2;
RM2=max([max(Msample'*Msample)]);%样本圆半径平方
RN2=max([max(Nsample'*Nsample)]);%样本圆半径平方
R2=18;%60;%max(RM2,RN2);
lenM=length(Msample(1,:));
lenN=length(Nsample(1,:));
aMi=zeros(lenM,1);
aNi=zeros(lenN,1);
WM=Msample*aMi;
WN=Nsample*aNi;
bM=0;
bN=0;
%W=[Msample,Nsample]*ai;%初始化Super Plane方向、节距=权重w、阀值b(神经元),圆点距超平面b/||w||
k=1;%试错次数&
num=0;%循环次数
while k~=0 && num<10
    k=0;
    num=num+1;
    for i=1:lenM
        if (WM'*Msample(:,i)+bM)-(WN'*Msample(:,i)+bN)<=0 %找Msample的超平面(WM,bM),若Msample距(WM,bM)非最远,则分类错误!
            aMi(i)=aMi(i)+1;%当分错,对应的ai+1
            bM=bM+R2;
            k=k+1;
            WM=Msample*aMi;
        end
    end
    if num>=10
        msgbox('Msample没找到超平面!');
    end
    %end  %%%%%%%%%%%%%%%%%%%%%%%%2013.1.17 by lijilin
%k=1;
%num=0;
%while k~=0 && num<10%%%%%%%%%%%%%2013.1.17 by lijilin
    %k=0;
    %num=num+1;
    for i=1:lenN
        if (WN'*Nsample(:,i)+bN)-(WM'*Nsample(:,i)+bM)<=0 %找Nsample的超平面
            aNi(i)=aNi(i)+1;%当分错,对应的ai+1
            bN=bN+R2;
            k=k+1;
            WN=Nsample*aNi;
        end
    end
    if num>=10
        msgbox('Nsample没找到超平面!');
    end
end
plot3(Msample(1,:)',Msample(2,:)',Msample(3,:)','X',Nsample(1,:)',Nsample(2,:)',Nsample(3,:)','o');
grid on;
hold on;
W=WM-WN;%Msample与NSample分界面
b=bM-bN;
%plot3([0,W(1)],[0,W(2)],[0,W(3)]);%绘制超平面向量
vec_d=abs(b)/(W'*W)*W;
plot3([0,vec_d(1)],[0,vec_d(2)],[0,vec_d(3)],'r');%绘制原点到超平面距离向量<x.d>=<d.d>=dd
%d1*x1^2+d2*x2^2+d3*x1x2-dd=0 原二维空间的点(x1,x2)带入特征三维空间的超平面方程(X-d)'*d=0中

%显然三维空间的面对应于原二维空间的椭圆线!!!
d=vec_d;
dd=d'*d;
x1=-2:0.1:2;
A=d(2);
B=d(3)*x1;
C=d(1)*x1.^2-dd;
x21=(-B+sqrt(B.^2-4*A.*C))/(2*A);
x22=(-B-sqrt(B.^2-4*A.*C))/(2*A);
%%%%%%%%%%%%%%%%%%%%%
x2=-2:0.1:2;
A=d(1);
B=d(3)*x2;
C=d(2)*x2.^2-dd;
x11=(-B+sqrt(B.^2-4*A.*C))/(2*A);
x12=(-B-sqrt(B.^2-4*A.*C))/(2*A);
figure;
plot([x1',x1',x11',x12'],[x21',x22',x2',x2']);
hold on
plot(M(1,:)',M(2,:)','X',N(1,:)',N(2,:)','o');

机器学习:空间变换进行非线性分类相关推荐

  1. 机器学习基石12:非线性变换(Nonlinear Transformation)

    本文介绍了非线性变换的整体流程:通过非线性变换,将非线性模型映射到另一个空间,转换为线性模型,再来进行线性分类. 之后介绍了非线性变换存在的问题:时间复杂度和空间复杂度的增加. 最后证明了非线性变换的 ...

  2. 5.9 程序示例--非线性分类-机器学习笔记-斯坦福吴恩达教授

    程序示例–非线性分类 接下来,我们采用高斯核函数来解决非线性可分问题,由于数据集较大,我们使用性能更好的完整版 SMO 算法进行训练: # coding: utf8 # svm/test_non_li ...

  3. 一文读懂:支持向量机(SVM)非线性分类问题

    点击 机器学习算法与Python学习 ,选择加星标 精彩内容不迷路 福利时间 奖品:<机器学习算法的数学解析与Python实现>x 5 参与方式:文末留言,赞数最多的5位为本次中奖者 开奖 ...

  4. pytorch空间变换网络

    pytorch空间变换网络 本文将学习如何使用称为空间变换器网络的视觉注意机制来扩充网络.可以在DeepMind paper 有关空间变换器网络的内容. 空间变换器网络是对任何空间变换的差异化关注的概 ...

  5. 独家 | 机器学习中的四种分类任务(附代码)

    作者:Jason Brownlee 翻译:陈丹 校对:杨毅远 全文约4400字,建议阅读18分钟 本文为大家介绍了机器学习中常见的四种分类任务.分别是二分类.多类别分类.多标签分类.不平衡分类,并提供 ...

  6. 独家思维导图!让你秒懂李宏毅2020机器学习(二)—— Classification分类

    独家思维导图!让你秒懂李宏毅2020机器学习(二)-- Classification分类 在上一篇文章我总结了李老师Introduction和regression的具体内容,即1-4课的内容,这篇我将 ...

  7. AV1基于机器学习的变换块快速划分

    AV1基于机器学习的变换块快速划分 在上一篇文章<AV1基于机器学习的快速变换模式选择>中讲解了AV1如何使用机器学习技术为每个变换块选择合适的变换模式,本节将讲解AV1如何利用机器学习技 ...

  8. 机器学习(五)常用分类模型(K最近邻、朴素贝叶斯、决策树)和分类评价指标

    机器学习(五)常用分类模型(K最近邻.朴素贝叶斯.决策树)和分类评价指标 文章目录 机器学习(五)常用分类模型(K最近邻.朴素贝叶斯.决策树)和分类评价指标 综述 常用分类模型 K最近邻模型 朴素贝叶 ...

  9. 空间变换网络简单介绍

    点击上方"AI公园",关注公众号,选择加"星标"或"置顶" 作者:Manjunath Bhat 编译:ronghuaiyang 导读 对空间 ...

最新文章

  1. jQuery插件—获取URL参数
  2. android之http协议编程(源码ppt),Android网络编程(八)源码解析OkHttp中篇[复用连接池]...
  3. loadrunner脚本运行时设置:Run Logic设置运行次数
  4. 高级软件工程第九次作业:东理三剑客团队作业-随笔2
  5. java sheet 打印区域设定,如何使用Java设置电子表格的打印区域。(How to set the print area of a spreadsheet using Java.)...
  6. drf 安装_drf 安装与配置
  7. 正常的vite创建项目并且安装vue router,vant的代码示例
  8. c++指针详解_c语言详解sizeof
  9. Altium Designer(四):敷铜设置
  10. mysql 导出中间 数据_mysql导出数据库几种方法
  11. php中怎么设置透明背景图片,css怎样设置背景透明
  12. Qt实践2: 简易计算器
  13. 练习4-11 统计素数并求和
  14. Windows 10, version 22H2 (released Oct 2022) 简体中文版、英文版下载
  15. ajax中的callback,ajax callback是什么
  16. 手机wifi延迟测试软件,测网速延迟(如何测试wifi延迟)
  17. 苹果显示未找到服务器,苹果浏览器找不到服务器是怎么回事
  18. 【狂神说:秦疆】SpringMVC笔记
  19. 手动清除网卡IP的Linux命令
  20. 冬令营Web基础整理——Day2

热门文章

  1. 安装cockpit通过nginx代理访问
  2. TyepScript入门教程 之 async await
  3. 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 线性回归
  4. Mysql搭建PXC集群 - Percona XtraDB Cluster
  5. 网络安全——浅谈——AAA认证技术——登录授权、配置命令
  6. mysql 格式化_mysql中格式化数字详解
  7. vue基础入门-应用 组件实例
  8. vim 编辑演示_改变我生活的7个Vim技巧(含演示)
  9. 如何使用此功能强大的工具将Wemo添加到Homekit
  10. React Router入门指南