机器学习 PR曲线图,ROC曲线图,梯度下降法及adgrad方法的matlab实现

PR曲线图及ROC曲线

clear all
clc

data=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)>=j
        TP=TP+1;
    elseif data(i,2)==0&&data(i,3)>=j
        FP=FP+1;
    elseif data(i,2)==0&&data(i,3)<j
        TN=TN+1;
    elseif data(i,2)==1&&data(i,3)<j
        FN=FN+1;
    end
    end
    p(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
clc

x0=[-2 2];
f0=yuanhanshu(x0);
g0=tidu(x0);
lr=0.001;
n=20000;


for i=1:n
    x1=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:n
    x1=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:n
    
    x1=x0-lr*g0;
    g0
    g1=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)
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PR曲线(Precision-Recall Curve)是一种用来评估分类器性能的常用曲线,通常用于在不平衡数据集中评估二分类算的性能。在MATLAB中,可以使用以下步骤绘制PR曲线: 1. 准备数据:首先,需要准备测试样本和对应的标签。标签应该是类别1或0的二进制标记,表示样本属于正例还是负例。 2. 获取分类器的输出:将测试样本输入到分类器中,并获取分类器对每个样本的预测输出。这些输出值通常是在0到1之间的置信度得分,表示样本属于正例的概率。 3. 设定不同的概率阈值:根据分类器的输出,设置不同的概率阈值来确定正例和负例的分类结果。可以从0到1设置多个阈值。 4. 计算准确率和召回率:对于每个阈值,根据分类结果计算准确率(Precision)和召回率(Recall)。 准确率:准确率是真正例(True Positive)在所有预测为正例的样本数量(真正例 + 假正例)中的比例。 Recall:召回率是真正例数量在所有实际为正例的样本数量(真正例 + 假负例)中的比例。 5. 绘制PR曲线:将不同阈值下的准确率和召回率绘制成PR曲线。横轴是召回率,纵轴是准确率。 在MATLAB中,可以使用曲线函数(plot)来绘制PR曲线。具体的绘图代码会依赖于数据的格式和结构,但一般可以使用循环来计算并绘制每个阈值下的准确率和召回率。 总结:PR曲线是一种用来评估分类器性能的重要工具,可以通过在MATLAB中准备数据、获取分类器输出、设定阈值、计算准确率和召回率,并使用plot函数绘制PR曲线。这样可以直观地了解分类器的性能,并进行比较和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值