function alpha = svm(K, C, params)
alpha = zeros(size(K, 1), 1);
% Set alpha0 to be C / 2, which will be optimum if mu is very large
alpha = C / 2;
% Set mu0 to be the average of the diagonal of K
mu = 1000*mean( diag( K ) );
% Set the beta parameter
beta = 0.667;
% Get the parameters
epsilon = params.epsilon;
Nmax = params.maxiter;
b = params.barrier;
% set up one matrix
one = ones(size(alpha));
for i = 1:Nmax
% Find the gradient
g = 0.5*(K + K')*alpha - one - mu*alpha.^(-1) + mu*(C - alpha).^(-1);
% Find the Hessian
H = 0.5*(K + K') + diag(mu*(alpha.^(-1)).*(alpha.^(-1)) + mu*((C - alpha).^(-1)).*((C - alpha).^(-1)));
% Compute the Newton direction
d = -(H \ g);
% update iterators
%i = i + 1;
t = 1;
% Perform backtracking line search
while (f(alpha + t*d, C, K, mu) > f(alpha, C, K, mu) + 0.5*t*g.'*d)
t = t * beta;
end
if( t > 0.99 && mu > epsilon )
mu = mu * b;
end
alpha = alpha + t * d;
if( norm(d) <= epsilon && mu <= epsilon )
break;
end
end
end
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1.领域:matlab,SVM支持向量机 2.内容:基于SVM支持向量机的数据二分类matlab仿真,SVM自己编程实现不使用matlab工具箱+代码仿真操作视频 3.用处:用于基于SVM支持向量机的数据二分类算法编程学习 4.指向人群:本硕博等教研学习使用 5.运行注意事项: 使用matlab2021a或者更高版本测试,运行里面的Runme_.m文件,不要直接运行子函数文件。运行时注意matlab左侧的当前文件夹窗口必须是当前工程所在路径。 具体可观看提供的操作录像视频跟着操作。
资源详情
资源评论
资源推荐
收起资源包目录
基于SVM支持向量机的数据二分类matlab仿真,SVM自己编程实现不使用matlab工具箱.rar (5个子文件)
基于SVM支持向量机的数据二分类matlab仿真,SVM自己编程实现不使用matlab工具箱
操作录像0030.avi 1.23MB
func
svm.m 1KB
f.m 229B
Runme.m 1KB
iris.csv 988B
共 5 条
- 1
fpga和matlab
- 粉丝: 15w+
- 资源: 2548
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1