没有合适的资源?快使用搜索试试~ 我知道了~
SVM分类器的相关算法和matlab源码
需积分: 50 42 下载量 33 浏览量
2019-01-26
10:01:37
上传
评论 6
收藏 7KB TXT 举报
温馨提示
试读
9页
SVM分类器的相关算法和matlab源码,部分内容如下,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
资源推荐
资源详情
资源评论
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) < 1 && a(n1) ~=C
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
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) < 1 && a(n1) ~=C
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
剩余8页未读,继续阅读
资源评论
天成志伟
- 粉丝: 3
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功