用matlab画logistic曲线回归代码
时间: 2024-01-10 14:05:03 浏览: 92
Matlab绘制Logistic图,matlab画logistic曲线,matlab源码.zip
下面是用 Matlab 画 logistic 曲线回归的示例代码:
```matlab
% 导入数据
load fisheriris
X = meas(51:end,1:2);
y = (strcmp('versicolor',species(51:end)) - 0.5) * 2;
% 添加偏置项
X = [ones(size(X,1),1) X];
% 初始化参数
theta = zeros(size(X,2),1);
% 定义 sigmoid 函数
sigmoid = @(z) 1 ./ (1 + exp(-z));
% 定义代价函数
J = @(theta) -1/length(y) * sum(y .* log(sigmoid(X*theta)) + (1-y) .* log(1-sigmoid(X*theta)));
% 定义梯度下降函数
alpha = 0.1;
num_iters = 500;
grad_desc = @(theta) theta - alpha/length(y) * X' * (sigmoid(X*theta) - y);
for iter = 1:num_iters
theta = grad_desc(theta);
end
% 绘制决策边界
plot_data(X(:,2:3), y);
hold on;
plot_x = [min(X(:,2))-2, max(X(:,2))+2];
plot_y = (-1./theta(3)).*(theta(2).*plot_x + theta(1));
plot(plot_x, plot_y);
legend('Versicolor', 'Not Versicolor', 'Decision Boundary');
% 绘制数据点
function plot_data(X, y)
pos = find(y == 1);
neg = find(y == -1);
plot(X(pos,1), X(pos,2), 'k+', 'LineWidth', 2, 'MarkerSize', 7);
plot(X(neg,1), X(neg,2), 'ko', 'MarkerFaceColor', 'y', 'MarkerSize', 7);
end
```
这段代码使用了 Fisher's Iris 数据集的前两个特征来预测是否是 Versicolor。首先将数据导入并添加偏置项,然后定义 sigmoid 函数和代价函数。使用梯度下降法训练模型,并使用训练后的参数绘制决策边界和数据点。
阅读全文