mtlab实现logistic代码
时间: 2023-10-26 14:50:10 浏览: 74
Logistic模型Matlab代码
当然可以!以下是一个使用MATLAB实现逻辑回归的简单示例代码:
```matlab
% 准备数据
X = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; % 输入特征
y = [0, 0, 0, 0, 1, 1, 1, 1, 1, 1]; % 目标变量
% 添加偏置项
X = [ones(length(X), 1), X];
% 初始化参数
theta = zeros(size(X, 2), 1);
% 定义逻辑回归假设函数
function h = sigmoid(X)
h = 1 ./ (1 + exp(-X));
end
% 定义代价函数
function J = costFunction(X, y, theta)
m = length(y);
h = sigmoid(X * theta);
J = (-1 / m) * sum(y .* log(h) + (1 - y) .* log(1 - h));
end
% 定义梯度下降函数
function [theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters)
m = length(y);
J_history = zeros(num_iters, 1);
for iter = 1:num_iters
h = sigmoid(X * theta);
theta = theta - (alpha / m) * X' * (h - y);
J_history(iter) = costFunction(X, y, theta);
end
end
% 设置学习率和迭代次数
alpha = 0.01;
num_iters = 1000;
% 运行梯度下降算法
[theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters);
% 打印最终参数和代价值
fprintf('最终参数: theta = [%f, %f]\n', theta(1), theta(2));
fprintf('最终代价值: J = %f\n', J_history(end));
% 绘制代价函数随迭代次数变化的图像
figure;
plot(1:num_iters, J_history);
xlabel('迭代次数');
ylabel('代价值');
title('代价函数随迭代次数变化');
% 预测新样本
x_new = 11;
x_new_with_bias = [1, x_new];
prediction = sigmoid(x_new_with_bias * theta);
fprintf('当 x = %d 时,预测结果为 %f\n', x_new, prediction);
```
这是一个简单的二分类逻辑回归示例,数据集包含一个输入特征X和一个目标变量y。代码中使用梯度下降算法来训练模型,得到最优的参数theta。最后,代码还会绘制代价函数随迭代次数的变化图表,并使用训练好的模型进行新样本的预测。
请注意,这只是一个简单的示例代码,实际应用中可能需要根据具体情况进行修改和扩展。希望对你有所帮助!
阅读全文