满意答案

暖眸轻_尘

2013.05.04

采纳率:15%    等级:14

已帮助:1444人

这个是非线性svm的:

1.命令函数部分:

clear;%清屏

clc;

x =load('data.txt');

n = length(x);%总样本数量

y = x(:,4);%类别标志

x = x(:,1:3);

tol = 0.0001;%精度要求

c = 1;%参数,对损失函数的权重

b = 0;%初始设置截距b

wold = 0;%未更新a时的w(a)

wnew = 0;%更新a后的w(a)

for i = 1 : 50%设置类别标志为1或者-1

y(i) = -1;

end

a = zeros(n,1);%参数a

for i = 1 : n%随机初始化a,a属于[0,c]

a(i) = 0.2;

end

%为简化计算,减少重复计算进行的计算

k = ones(n,n);

for i = 1 :n%求出k矩阵,便于之后的计算

for j = 1 : n

k(i,j) = k(x(i,:),x(j,:));

end

end

sum = zeros(n,1);%中间变量,便于之后的计算,sum(k)=sigma a(i)*y(i)*k(k,i);

for k = 1 : n

for i = 1 : n

sum(k) = sum(k) + a(i) * y(i) * k(i,k);

end

end

while 1%迭代过程

%启发式选点

n1 = 1;%初始化,n1,n2代表选择的2个点

n2 = 2;

%n1按照第一个违反kkt条件的点选择

while n1 <= n

if y(n1) * (sum(n1) + b) == 1 && a(n1) >= c && a(n1) <= 0

break;

end

if y(n1) * (sum(n1) + b) > 1 && a(n1) ~= 0

break;

end

if y(n1) * (sum(n1) + b)

break;

end

n1 = n1 + 1;

end

%n2按照最大化|e1-e2|的原则选取

e1 = 0;

e2 = 0;

maxdiff = 0;%假设的最大误差

e1 = sum(n1) + b - y(n1);%n1的误差

for i = 1 : n

tempsum = sum(i) + b - y(i);

if abs(e1 - tempsum)> maxdiff

maxdiff = abs(e1 - tempsum);

n2 = i;

e2 = tempsum;

end

end

%以下进行更新

a1old = a(n1);

a2old = a(n2);

kk = k(n1,n1) + k(n2,n2) - 2*k(n1,n2);

a2new = a2old + y(n2) *(e1 - e2) / kk;%计算新的a2

%a2必须满足约束条件

s = y(n1) * y(n2);

if s == -1

u = max(0,a2old - a1old);

v = min(c,c - a1old + a2old);

else

u = max(0,a1old + a2old - c);

v = min(c,a1old + a2old);

end

if a2new > v

a2new = v;

end

if a2new

a2new = u;

end

a1new = a1old + s * (a2old - a2new);%计算新的a1

a(n1) = a1new;%更新a

a(n2) = a2new;

%更新部分值

sum = zeros(n,1);

for k = 1 : n

for i = 1 : n

sum(k) = sum(k) + a(i) * y(i) * k(i,k);

end

end

wold = wnew;

wnew = 0;%更新a后的w(a)

tempsum = 0;%临时变量

for i = 1 : n

for j = 1 : n

tempsum= tempsum + y(i )*y(j)*a(i)*a(j)*k(i,j);

end

wnew= wnew+ a(i);

end

wnew= wnew - 0.5 * tempsum;

%以下更新b:通过找到某一个支持向量来计算

support = 1;%支持向量坐标初始化

while abs(a(support))

support = support + 1;

end

b = 1 / y(support) - sum(support);

%判断停止条件

if abs(wnew/ wold - 1 ) <= tol

break;

end

end

%输出结果:包括原分类,辨别函数计算结果,svm分类结果

for i = 1 : n

fprintf('第%d点:原标号 ',i);

if i <= 50

fprintf('-1');

else

fprintf(' 1');

end

fprintf(' 判别函数值%f 分类结果',sum(i) + b);

if abs(sum(i) + b - 1)

fprintf('1\n');

else if abs(sum(i) + b + 1)

fprintf('-1\n');

else

fprintf('归类错误\n');

end

end

end

2.名为f的功能函数部分:

function y = k(x1,x2)

y = exp(-0.5*norm(x1 - x2).^2);

end

3.数据:

0.8871 -0.3491 8.3376 0

1.2519 1.2083 6.5041 0

-1.1925 1.9338 1.8790 0

-0.1277 2.4371 2.6971 0

1.9697 3.0906 6.0391 0

0.7603 0.8241 1.5323 0

1.6382 3.5516 4.4694 0

1.3438 -0.4539 5.9366 0

-1.3361 -2.0201 1.6393 0

-0.3886 3.3041 8.0450 0

-0.6780 6.0196 -0.4084 0

0.3552 -0.1051 1.2458 0

1.6560 4.0786 0.8521 0

0.8117 3.5451 6.8925 0

1.4773 -1.9340 3.9256 0

-0.0732 -0.9526 0.4609 0

0.1521 4.3711 2.2600 0

1.4820 0.7493 0.3475 0

0.6140 4.5261 8.3776 0

0.5721 3.3460 3.7853 0

0.5269 4.1452 4.3900 0

1.7879 -0.5390 2.5516 0

0.9885 5.7625 0.1832 0

-0.3318 2.4373 -0.6884 0

1.3578 5.4709 3.4302 0

2.7210 -1.1268 4.7719 0

0.5039 -0.1025 2.3650 0

1.1107 1.6885 3.7650 0

0.7862 1.3587 7.3203 0

1.0444 -1.5841 3.6349 0

1.7795 1.7276 4.9847 0

0.6710 1.4724 -0.5504 0

0.2303 0.2720 -1.6028 0

1.7089 -1.7399 4.8882 0

1.0059 0.5557 5.1188 0

2.3050 0.8545 2.8294 0

1.9555 0.9898 0.3501 0

1.7141 1.5413 3.8739 0

2.2749 5.3280 4.9604 0

1.6171 0.5270 3.3826 0

3.6681 -1.8409 4.8934 0

1.1964 1.8781 1.4146 0

0.7788 2.1048 0.0380 0

0.7916 5.0906 3.8513 0

1.0807 1.8849 5.9766 0

0.6340 2.6030 3.6940 0

1.9069 -0.0609 7.4208 0

1.6599 4.9409 8.1108 0

1.3763 0.8899 3.9069 0

0.8485 1.4688 6.7393 0

3.6792 6.1092 4.9051 1

4.3812 7.2148 6.1211 1

4.3971 3.4139 7.7974 1

5.0716 7.7253 10.5373 1

5.3078 8.8138 6.1682 1

4.1448 5.5156 2.8731 1

5.3609 6.0458 4.0815 1

4.7452 6.6352 1.3689 1

6.0274 6.5397 -1.9120 1

5.3174 3.0134 6.7935 1

7.2459 3.6970 3.1246 1

6.1007 8.1087 5.5568 1

5.9924 6.9238 5.7938 1

6.0263 5.3333 7.5185 1

3.6470 8.0915 6.4713 1

3.6543 7.2264 7.5783 1

5.0114 6.5335 3.5229 1

4.4348 7.4379 -0.0292 1

3.6087 3.7351 3.0172 1

3.5374 5.5354 7.6578 1

6.0048 2.0691 10.4513 1

3.1423 4.0003 5.4994 1

3.4012 7.1536 8.3510 1

5.5471 5.1372 -1.5090 1

6.5089 5.4911 8.0468 1

5.4583 6.7674 5.9353 1

4.1727 2.9798 3.6027 1

5.1672 8.4136 4.8621 1

4.8808 3.5514 1.9953 1

5.4938 4.1998 3.2440 1

5.4542 5.8803 4.4269 1

4.8743 3.9641 8.1417 1

5.9762 6.7711 2.3816 1

6.6945 7.2858 1.8942 1

4.7301 5.7652 1.6608 1

4.7084 5.3623 3.2596 1

6.0408 3.3138 7.7876 1

4.6024 8.3517 0.2193 1

4.7054 6.6633 -0.3492 1

4.7139 5.6362 6.2330 1

4.0850 10.7118 3.3541 1

6.1088 6.1635 4.2292 1

4.9836 5.4042 6.7422 1

6.1387 6.1949 2.5614 1

6.0700 7.0373 3.3256 1

5.6881 5.1363 9.9254 1

7.2058 2.3570 4.7361 1

4.2972 7.3245 4.7928 1

4.7794 8.1235 3.1827 1

3.9282 6.4092 -0.6339 1

00分享举报

svm 程序matlab,求svm的matlab程序相关推荐

  1. 运用数学软件matlab求无穷积分,matlab积分的计算及其简单应用论文.doc

    积分的计算及其简单应用 摘要:本文简要的概述了MATLAB 在高等数学中积分的计算及应用:利用MATLAB 中符号积分和数值积分的命令,计算定积分和不定积分.同时,也可以通过这些命令来解决一些实际问题 ...

  2. matlab 求曲面体积,matlab求两曲面之间的体积

    MATLAB求曲面相交所成空间曲线的图形 放在你程序后也可,单独运行也行:t=-0.1:0.1:2*pi;x=2*cos(t);%交线参数方程z=2*sin(t);y1=sqrt(5)*ones(si ...

  3. matlab 求留数,用matlab求留数

    <用matlab求留数>由会员分享,可在线阅读,更多相关<用matlab求留数(3页珍藏版)>请在金锄头文库上搜索. 1.收稿日期: 2006) 05- 29作者简介: 贾新民 ...

  4. matlab求方程实根,matlab怎么求方程的根

    MATLAB解方程_IT/计算机_专业资料.一般的代数方程函数solve用于求解一般代数方程的根,假定S为符 号表达式,命令solve (S)求解表达式等于0的根,也 可以再输入一个...... MA ...

  5. matlab求微分方程精确解,matlab求微分方程精确解及近似解.ppt

    matlab求微分方程精确解及近似解.ppt 还剩 24页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 求微分方程的解q 自牛顿发明微积分以来,微分方 ...

  6. matlab求表达式绝对值,matlab绝对值怎么表示

    Matlab 的内部常数 Matlab 的常用内部数学函数 指数函数 exp(x) log(x) 对数函数 log10(x) log2(x) 开方函数 sqrt(x) 绝对值函数 abs(x) sin ...

  7. matlab求最短路,Matlab最短路学习

    文章目录 1.无向图最短路引例 2.有向图最短路引例 3.单源最短路函数graphshortestpath 1)对函数graphshortestpath进行解释 2)对于find函数解释 3)对于sp ...

  8. 用matlab求累次极限,Matlab笔记——数值计算—高数篇015

    15. 数值计算-高数篇 一.求极限 limit(f,x,a)--求极限lim ()x a f x → limit(f,x,a,'right')--求右极限lim ()x a f x +→ limit ...

  9. 试用matlab求e值,matlab中如何求e精确到20位

    MATLAB语言基础 第一节 使用MATLAB的窗口环境 一.MATLAB语言的显著特点 1.具有强大的矩阵运算能力:Matrix Laboratory(矩阵实验室),使得矩阵运算非常简单. 2.是一 ...

最新文章

  1. spring实战六之使用基于java配置的Spring
  2. 【数据分析】年轻人如何才能实现年薪百万呢?
  3. webscoket断线重连
  4. 继承(父类,子类的继承方式,成员变量、静态变量的引用方法)
  5. 获取url中的参数方法,避免#的干扰,删除url指定参数(vue hash模式 有#删除指定参数问题)
  6. Android 系统(151)----添加开关机铃声
  7. [C#]System.Timers.Timer
  8. python对象之间的关系
  9. 2019年5款你必须知道的顶级ASO优化工具
  10. 从菜鸟到完全学不会二维傅立叶在图像处理算法中的应用【老司机教你学傅立叶】
  11. 左连接 oracle条件查询,sql 左连接查询条件and与where
  12. android+网速监控源码,记录: Android测试网速实现
  13. WatchGuard 防火墙封 Msn qq icq
  14. psd 将分组合并导出png图片
  15. 深入理解Java虚拟机——运行时栈帧结构(局部变量表)
  16. 华为杯数学建模2020获奖名单_2020建模国赛获奖名单公布!你上榜了吗?
  17. Firmament - 大规模集群任务调度
  18. GSM蜂窝移动通信系统 --- 时间色散和均衡
  19. gprMax中任意不规则形状建模与模拟
  20. 操作系统——生产者消费者模型以及信号量

热门文章

  1. 深度学习卷积网络中反卷积/转置卷积的理解 transposed conv/deconv
  2. 模块化数据中心成未来互联网企业首选
  3. TxQueryRunner-JDBC小工具
  4. 数据库优化案例——————某市中心医院HIS系统
  5. asp实用类库--DataList
  6. Tomcat单机多实例
  7. 字符集GBK和UTF8的区别说明
  8. java struts2 框架 入门简介
  9. linux ssh 连接超时中断 解决方法
  10. linux centos 网络 时间 日期 同步