⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 one-class.m

📁 一类支持向量机
💻 M
字号:
clear all
close all
c=1;
g=0.5; %高斯函数的参数
y(1)=0;
y(2)=0;
for k=1:85
y(k+2)=1-1.4*y(k+1)^2+0.3*y(k);
end
% plot(y);
X=[1,-0.4];
for k=1:85
    X=[X;[y(k+1),y(k+2)]];
end
plot(X(:,1),X(:,2),'*');
hold on;
[n,m]=size(X);
for i=1:n
    for j=1:n
        k(i,j)=exp(-(X(i,:)-X(j,:))*(X(i,:)-X(j,:))'/g);  %加;计算机不会在运行窗口K(i'j).       
    end
end 
H=k;
f=zeros(n,1);
Aep=ones(1,n);
bep=1;
LB=zeros(n,1);
UB=ones(n,1).*c;
a=quadprog(H,f,[],[],Aep,bep,LB,UB);
e=1e-9;    %为了保证数据的稳定性设计一个小误差
Lm=find(a>e);  %求取ai>0的下标即其对应训练标本的下标
Svn=length(Lm);
Lm1=find(a>e&(a<(c-e)));  %求取0<ai<c的下标。
Svn1=length(Lm1);   %求取0<ai<c的个数,用来通过求和取平均计算b值。
R=0;
for s=1:Svn1
    for z=1:n
        R=R+2*a(z)*exp(-(X(Lm(s),:)-X(z,:))*(X(Lm(s),:)-X(z,:))'/g);
    end
end
R=1+a'*H*a-R/Svn1;
x=sym('x');
y=sym('y');
f=0;
for i=1:n
    f=f+2*a(i)*exp(-([x,y]-X(i,:))*([x,y]-X(i,:))'/g);
end
f=1+a'*H*a-f-R;
%ezplot(f);



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -