• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

基于matlab的逻辑回归示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

最近研究机器学习算法,属于小白,学习了“寒小阳”博主的文章(地址:http://blog.csdn.net/han_xiaoyang/article/details/49123419)后,对机器学习的逻辑回归有了个大概的认识,再借助另一位博主“ Earendil ”(地址:https://www.cnblogs.com/earendil/p/8268757.html)对于其中公式的详细推导,试着用matlab语言自己实现一遍,现与大家分享,代码如下:
clc
clear all
close all
data1 = importdata(‘data1.txt’);
%归一化
data1(:,1) = (data1(:,1)- mean(data1(:,1)))./ std(data1(:,1));
data1(:,2) = (data1(:,2)- mean(data1(:,2)))./ std(data1(:,2));
[m,n] = size(data1);
figure
for row = 1:m
if data1(row,3) == 1
plot(data1(row,1),data1(row,2),’.’);
hold on
else
plot(data1(row,1),data1(row, 2),‘x’);
hold on
end
end
%矩阵化
x0 = ones(m,1);
X = [x0,data1(:,1),data1(:,2)];
[m1,n1] = size(X);
theta = ones(n1,1);%初始化
alpha = 0.001;%步长
for iter = 1:5000
A = Xtheta;
g_A = 1./(1+exp(-A));
y = data1(:,3);
Err = g_A - y;
theta_new = theta - alpha
(X’*Err);%更新变量
theta = theta_new;
end
x_1 = data1(:,1);
y_1 = -(theta(1) + theta(2)*x_1)/theta(3);
figure
plot(x_1,y_1);
hold on

for row = 1:m
if data1(row,3) == 1
plot(data1(row,1),data1(row,2),’.’);
hold on
else
plot(data1(row,1),data1(row, 2),‘x’);
hold on
end
end
在此,我将原始数据归一化,得到的结果如下:

这里,有一点有点困惑,原文博主没有将原始数据归一化,也能求得正确的分界线,但是我如果不归一化,就会得到错误的结果,如下图:

机器学习小白,有两点问题:
1、为什么不讲数据归一化,就得不到正确的分界线?
2、关于博主“ Earendil ”公式推导中,如下划线部分总觉得掉了一个负号。但是按照博主推导结果却得出了正确的分界线(数据归一化后),是我对公式推导的误解吗?请大牛们不吝赐教。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Matlab 中输入希腊字母发布时间:2022-07-18
下一篇:
Delphi For Android 开发笔记 1 - 开发工具介绍 - 峋山隐修会发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap