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

📄 newton.m

📁 用MATLAB编写的基于拟牛顿算法的最优分类器程序
💻 M
字号:
function [w0,r0,p,q,t]=Newton(A,Y,m1,m2,n,kk)
%拟牛顿算法的最优分类器
%A为样本矩阵,每行为一个样本,每列为该样本的特征值
%Y为样本标号
%m1为训练样本数
%m2为测试样本数
%n为生成的每个样本的特征
%kk用来确定使用哪个光滑多项式 其值只能取 1,2,3
%p为训练集的判准率
%q为测试集的判准率
%t为求解时间
m=m1+m2;
w0=ones(n,1);
r0=0;
limixi=10^(-6);
G0=gradz(A,Y,w0,r0,m,n,kk);
H0=hesse(A,Y,w0,r0,m,n,kk);
lamda=1;
tic;
while(G0'*G0>limixi&lamda>10^-12)
d0=-inv(H0)*G0;
lamda=armijo(A,Y,w0,r0,m,n,kk,G0,d0);
w1=w0+lamda*d0(1:n);
r1=r0+lamda*d0(n+1);
w0=w1;
r0=r1;
G0=gradz(A,Y,w0,r0,m,n,kk);
H0=hesse(A,Y,w0,r0,m,n,kk);
end
t=toc;
%求训练集判准率
P=[];
for i=1:m1
    if(A(i,:)*w0>0)
        p=1;P=[P,p];
    else
        p=-1;P=[P,p];
    end
end
p1=0;
for i=1:m1
    if Y(1,i)==P(1,i)
       p1=p1+1;
    else
        p1=p1;
    end
end
p=p1/m1;

%求测试集判准率
P1=[];
for i=m1+1:m
    if(A(i,:)*w0>0)
        pp=1;P1=[P1,pp];
    else
        pp=-1;P1=[P1,pp];
    end
end
p2=0;
for i=1:m2
    if Y(1,m1+i)==P1(1,i)
       p2=p2+1;
    else
        p2=p2;
    end
end
q=p2/m2;

⌨️ 快捷键说明

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