svm 程序matlab,求svm的matlab程序
满意答案
暖眸轻_尘
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程序相关推荐
- 运用数学软件matlab求无穷积分,matlab积分的计算及其简单应用论文.doc
积分的计算及其简单应用 摘要:本文简要的概述了MATLAB 在高等数学中积分的计算及应用:利用MATLAB 中符号积分和数值积分的命令,计算定积分和不定积分.同时,也可以通过这些命令来解决一些实际问题 ...
- matlab 求曲面体积,matlab求两曲面之间的体积
MATLAB求曲面相交所成空间曲线的图形 放在你程序后也可,单独运行也行:t=-0.1:0.1:2*pi;x=2*cos(t);%交线参数方程z=2*sin(t);y1=sqrt(5)*ones(si ...
- matlab 求留数,用matlab求留数
<用matlab求留数>由会员分享,可在线阅读,更多相关<用matlab求留数(3页珍藏版)>请在金锄头文库上搜索. 1.收稿日期: 2006) 05- 29作者简介: 贾新民 ...
- matlab求方程实根,matlab怎么求方程的根
MATLAB解方程_IT/计算机_专业资料.一般的代数方程函数solve用于求解一般代数方程的根,假定S为符 号表达式,命令solve (S)求解表达式等于0的根,也 可以再输入一个...... MA ...
- matlab求微分方程精确解,matlab求微分方程精确解及近似解.ppt
matlab求微分方程精确解及近似解.ppt 还剩 24页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 求微分方程的解q 自牛顿发明微积分以来,微分方 ...
- matlab求表达式绝对值,matlab绝对值怎么表示
Matlab 的内部常数 Matlab 的常用内部数学函数 指数函数 exp(x) log(x) 对数函数 log10(x) log2(x) 开方函数 sqrt(x) 绝对值函数 abs(x) sin ...
- matlab求最短路,Matlab最短路学习
文章目录 1.无向图最短路引例 2.有向图最短路引例 3.单源最短路函数graphshortestpath 1)对函数graphshortestpath进行解释 2)对于find函数解释 3)对于sp ...
- 用matlab求累次极限,Matlab笔记——数值计算—高数篇015
15. 数值计算-高数篇 一.求极限 limit(f,x,a)--求极限lim ()x a f x → limit(f,x,a,'right')--求右极限lim ()x a f x +→ limit ...
- 试用matlab求e值,matlab中如何求e精确到20位
MATLAB语言基础 第一节 使用MATLAB的窗口环境 一.MATLAB语言的显著特点 1.具有强大的矩阵运算能力:Matrix Laboratory(矩阵实验室),使得矩阵运算非常简单. 2.是一 ...
最新文章
- spring实战六之使用基于java配置的Spring
- 【数据分析】年轻人如何才能实现年薪百万呢?
- webscoket断线重连
- 继承(父类,子类的继承方式,成员变量、静态变量的引用方法)
- 获取url中的参数方法,避免#的干扰,删除url指定参数(vue hash模式 有#删除指定参数问题)
- Android 系统(151)----添加开关机铃声
- [C#]System.Timers.Timer
- python对象之间的关系
- 2019年5款你必须知道的顶级ASO优化工具
- 从菜鸟到完全学不会二维傅立叶在图像处理算法中的应用【老司机教你学傅立叶】
- 左连接 oracle条件查询,sql 左连接查询条件and与where
- android+网速监控源码,记录: Android测试网速实现
- WatchGuard 防火墙封 Msn qq icq
- psd 将分组合并导出png图片
- 深入理解Java虚拟机——运行时栈帧结构(局部变量表)
- 华为杯数学建模2020获奖名单_2020建模国赛获奖名单公布!你上榜了吗?
- Firmament - 大规模集群任务调度
- GSM蜂窝移动通信系统 --- 时间色散和均衡
- gprMax中任意不规则形状建模与模拟
- 操作系统——生产者消费者模型以及信号量