逻辑回归的MATLAB实现(二分类问题)

数据输入:x(:,1:n)为特征集合,y(:,1)为训练集的分类集合(要用0和1进行分类,也就是说y中只能有0和1)

数据输出:Y=a0+a1*x1+a2*x2......+an*xn中的系数矩阵,和测试集的结果

代码(其实就两行重要,其他的忽略了):

/*****************************************

a =glmfit(x,y,'binomial', 'link', 'logit'); //用逻辑回归来计算系数矩阵
logitFit = glmval(
a,x, 'logit'); //用逻辑回归的结果预测测试集的结果

/*****************************************


例程:

/******************************************

data = importdata('somelab.xlsx');
x(:,1:4) = data.data.Sheet1(:,1:4);
y(:,1) = data.data.Sheet1(:,7);
a =glmfit(x(1:80,1:4),y(1:80,1),'binomial', 'link', 'logit');
logitFit = glmval(b,x(80:100,1:4), 'logit');

//用训练集来测试最开心咯~O(∩_∩)O~~

/******************************************

二分类逻辑回归是一种常用的机器学习算法,用于解决二分类问题。在Matlab中,可以通过编写相关的函数来实现二分类逻辑回归。 首先,需要编写一个逻辑函数,用于计算样本属于正类的概率。该函数可以使用sigmod函数来实现,即将输入的线性组合通过sigmod函数映射到0到1之间的概率值。 其次,需要编写一个代价函数,用于评估模型的预测效果。该函数可以使用交叉熵损失函数来衡量预测结果与真实结果的差异。 最后,编写一个主函数,用于训练模型和进行预测。主函数中包括了梯度下降法更新参数、计算代价函数值、划分训练集和测试集、预测分类结果等步骤。 下面是一个示例的二分类逻辑回归Matlab代码: ```matlab % 逻辑函数 function y = sigmod1(X,theta) y = 1./(1 + exp(-X*theta)); end % 代价函数 function [J] = costlog(theta, y, X, k) J = -1 * sum(y.*log(sigmod1(X,theta)) + (1-y).*log(1-sigmod1(X,theta))) + sum(k.*theta); end % 主函数 function [J,H,error,theta,sim_y,c] = logistics1(x, y, a, diedai, k) [m,l] = size(x); theta = zeros(m+1, 1); X = [x'; ones(1, l)]; H = []; J = []; L = fix(0.7*length(y)); train_y = y(1:L); train_X = X(:, 1:L); test_y = y(L+1:end); test_X = X(:, L+1:end); for i = 1:diedai theta = theta - a * (train_X * (sigmod1(train_X,theta) - train_y)') - k .* theta; H = [H, theta]; J = [J, costlog(theta, train_y, train_X, k)]; end sim_y = sigmod1(test_X, theta); c = 0; for i = 1:length(test_y) if(sim_y(i) > 0.5) sim_y(i) = 1; else sim_y(i) = 0; end if(sim_y(i) ~= test_y(i)) c = c + 1; end end error = c / length(test_y); plot(sim_y, 'b.') hold on plot(test_y, 'r.') r = corrcoef(sim_y, test_y); error end ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值