机器学习-Logistic回归之使用随机梯度上升算法预测病马死亡率

本文介绍了一种利用Logistic回归算法预测病马死亡率的方法,采用随机梯度上升算法进行训练,并在UCI数据集上进行验证,通过10次实验统计出了平均识别正确率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运行环境:ubuntu16.10+MATLAB2016a

数据集:

该数据集来自2010年1月11日的UCI机器学习数据库,该数据最早由加拿大安大略省圭尔夫大学计算机系Mary McLeish和Matt Cecile收集。
每一行为一个样本,最后一列为标签。
可自行百度“从疝气病症预测病马的死亡率的数据集”

基于MATLAB的代码:

%%机器学习-logistic回归-使用随机梯度上升算法预测病马死亡率
%%machine learning-logistic regression-predict mortality using stochastic gradient ascent algorithm
clear;
trainSet = importdata('horseColicTraining.txt');
[m,n] = size(trainSet);
trainVectors = zeros(m,n);
trainVectors(:,1) = ones(m,1);
trainVectors(:,2:end) = trainSet(:,1:end-1);
trainLabels = trainSet(:,end);
maxCycles = 500;   %最大迭代次数
weights = ones(1,n);   %回归系数
rightRate = zeros(1,10);
for k = 1:10
    for i = 1:maxCycles
        for j = 1:m
            alpha = 4.0 / (1.0+i+j) + 0.01;   %步长是可变的
            randIndex = fix(1+(m-1)*rand);
            h = 1.0./(1 + exp(-trainVectors(randIndex,:) * weights'));
            error = trainLabels(randIndex) - h;
            weights = weights + alpha * error *trainVectors(randIndex,:);
        end
    end
%%测试
testSet = importdata('horseColicTest.txt');
[m,n] = size(testSet);
testVectors = zeros(m,n);
testVectors(:,1) = ones(m,1);
testVectors(:,2:end) = testSet(:,1:end-1);
testLabels = testSet(:,end);
prob = 1.0./(1 + exp(-testVectors * weights'));
predictLabels = prob>0.5;
rightRate(k) = sum(predictLabels == testLabels) / m;
end
bar(1:10,rightRate);
xlabel('实验次数');
ylabel('正确率');

实验结果:

这里写图片描述
  这是进行了10次实验统计出来的识别正确率,使用MATLAB的mean函数计算十次正确率的平均值,一般在0.65左右。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值