Logistic预测人口数据Matlab代码
时间: 2023-12-06 20:01:54 浏览: 97
这是一个简单的 Logistic 回归模型的 Matlab 代码,用于预测人口数据。
```matlab
% 导入数据
data = readtable('population_data.csv');
x = data.Year - 1950; % 将年份转化为相对年份
y = data.Population;
% 将数据归一化
x = x / max(x);
y = y / max(y);
% 将数据分为训练集和测试集
train_ratio = 0.7; % 训练集所占比例
train_size = round(length(x) * train_ratio);
train_x = x(1:train_size);
train_y = y(1:train_size);
test_x = x(train_size+1:end);
test_y = y(train_size+1:end);
% 训练 Logistic 回归模型
theta = [0;0]; % 初始化模型参数
alpha = 0.1; % 学习率
epochs = 1000; % 迭代次数
for i = 1:epochs
h = sigmoid(train_x * theta);
gradient = train_x' * (h - train_y) / length(train_y);
theta = theta - alpha * gradient;
end
% 在测试集上测试模型
predictions = sigmoid(test_x * theta);
mse = mean((predictions - test_y).^2);
fprintf('MSE: %f\n', mse);
% 绘制结果
figure;
plot(x, y, 'o');
hold on;
plot(x, sigmoid(x * theta), '-');
xlabel('相对年份');
ylabel('人口比例');
legend('原始数据', 'Logistic 回归模型');
```
其中,`population_data.csv` 是包含年份和人口数量的 CSV 文件,代码中使用了 sigmoid 函数作为激活函数:
```matlab
function g = sigmoid(z)
g = 1 ./ (1 + exp(-z));
end
```
阅读全文