本文主要是介绍机器学习 PR曲线图,ROC曲线图,梯度下降法及adgrad方法的matlab实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
PR曲线图及ROC曲线
clear all
clcdata=xlsread("C:\Users\19680\Desktop\作业1数据.xlsx");
n=size(data,1);
t=0; %t参数记录roc曲线下x,y轴
for j=1:-0.01:0 %j代表阈值%初始化TP=0;FP=0;TN=0;FN=0;t=t+1;for i=1:n %i代表1-200序列遍历if data(i,2)==1&&data(i,3)>=jTP=TP+1;elseif data(i,2)==0&&data(i,3)>=jFP=FP+1;elseif data(i,2)==0&&data(i,3)<jTN=TN+1;elseif data(i,2)==1&&data(i,3)<jFN=FN+1;endendp(t)=TP/(TP+FP);r(t)=TP/(TP+FN);c(t)=TP/(TP+FN);z(t)=FP/(FP+TN);end plot(c,z); %ROC曲线
hold on
plot(r,p); %PR曲线
梯度下降法和adgrad方法
clear all
clcx0=[-2 2];
f0=yuanhanshu(x0);
g0=tidu(x0);
lr=0.001;
n=20000;for i=1:nx1=x0-lr*g0;g1=tidu(x1);f1=yuanhanshu(x1);f0=f1;x0=x1;g0=g1;N(i,:) = x0;M(i,:) = f0;
end
x0;
f0;
plot(N,M)
function f=yuanhanshu(x)f=(1-x(1))^2+100*(x(2)-x(1)^2)^2;
function g=tidu(x)t1=4*100*x(1)^3+(2-4*100*x(2))*x(1)-2;t2=2*100*(x(2)-x(1)^2);g=[t1 t2];
adgrad方法
clear all
clc%adgrad 但是和梯度下降法只增加了一个学习率的学习率
x0=[-2 2];
f0=yuanhanshu(x0);
g0=tidu(x0);
lr=0.001; %学习率
llr=0.99; %学习率的学习率
n=20000;for i=1:nx1=x0-lr*g0;g1=tidu(x1);f1=yuanhanshu(x1);lr=llr*lr;f0=f1;x0=x1;g0=g1;N(i,:) = x0;M(i,:) = f0;
end
x0;
f0;
plot(N,M)
adgrad修改版还是不会,图不对劲
clear all
clc%adgrad 梯度下降算法
x0=[-2 2];
f0=yuanhanshu(x0);
g0=tidu(x0);
lr=0.001;
n=200;
ssum=g0.^2+1e-10;
eps=1e-10;for i=1:nx1=x0-lr*g0;g0g1=tidu(x1);f1=yuanhanshu(x1);ssum=ssum+g1.^2+eps;ssum(1,1)^2+sum(1,2)^2;lr=lr/sqrt(ssum(1,1)^2+sum(1,2)^2);f0=f1;x0=x1;g0=g1;N(i,:) = x0;M(i,:) = f0;
end
x0;
f0;
plot(N,M)
这篇关于机器学习 PR曲线图,ROC曲线图,梯度下降法及adgrad方法的matlab实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!