Logistic回归分类----梯度上升法

本算法根据《机器学习实战》一书改编而来,原书使用了Python语言所写,自我感觉没有Matlab好用,所以进行了改写。

Logistic回归分类是一种常用的分类方法,其基本思想是利用现有数据对分类边界线建立回归公式,以此进行分类。本文的实验数据因为量大,所以放在了网盘上,https://pan.baidu.com/s/1qY9jFsg。

以下为实现代码:

clc;
clear;
%加载测试数据文件,前两列为坐标值,后两列为类标号
fileID = fopen('D:\matlabFile\Logistic\Logistic.txt');
DS=textscan(fileID,'%f %f %f');
fclose(fileID);
%将数据转为矩阵形式
DataMat=cat(2,DS{1},DS{2});
%在dataMat第一列之前再增加都为1的列
[Row,Column]=size(DataMat);
DataMat=cat(2,ones(Row,1),DataMat);
LabelMat=DS{3};
%重新获得行列数
[Row,Column]=size(DataMat);
%%%===利用梯度上升法寻找最佳参数
%设定alpha参数
Alpha=0.001;
%设定最大循环次数
MaxCycle=500;
%初始化系数矩阵为1
Weight=ones(Column,1);
%设定循环结束标志
flag=1;
while flag<MaxCycle+1
    %调用系统sigmoid函数
    h=sigmf(DataMat*Weight,[1,0]);
    %计算误差
    Error=LabelMat-h;
    %更新系数矩阵
    Weight=Weight+Alpha*DataMat'*Error;
    flag=flag+1;
end
%画出原始点集
scatter(DataMat(:,2),DataMat(:,3),'filled');
hold on
%画出最佳拟合曲线
%定义X的取值范围
x=-3:0.1:3;
%计算Y的值域范围
y=(-Weight(1)-Weight(2)*x')/Weight(3);
plot(x,y,'r');

下图为仿真结果:

                                                

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值