You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Sklearn线性回归预测输入数据范围外的未来年份人口?

解决人口预测问题:用线性回归预测超出数据集范围的年份人口

你的问题核心是模型的特征与目标变量搞反了——当前你用人口(pop)预测年份(year),但要实现“输入未来年份,得到对应人口”的需求,必须调换两者的角色,把年份作为特征、人口作为预测目标来训练模型。

以下是具体实现步骤和代码:

步骤1:调整模型训练逻辑

  1. 读取CSV数据后,将year设为特征(输入),pop设为目标变量(输出)。
  2. 注意:Scikit-learn的模型要求特征数据必须是二维数组,所以需要对year列做格式处理。

步骤2:生成待预测的年份序列

生成你需要的年份范围(比如68到150),同样转成二维数组格式,满足模型输入要求。

完整代码示例

import pandas as pd
from sklearn.linear_model import LinearRegression
import numpy as np

# 1. 读取CSV数据
df = pd.read_csv('你的数据文件名.csv')

# 2. 准备特征与目标变量:year是特征,pop是目标
X = df[['year']]  # 用双括号直接保持二维格式,也可以用df['year'].values.reshape(-1,1)
y = df['pop']

# 3. 训练线性回归模型
model = LinearRegression()
model.fit(X, y)

# 4. 生成待预测的年份(68到150)
predict_years = np.arange(68, 151).reshape(-1, 1)  # 转成二维数组

# 5. 执行预测
predicted_pops = model.predict(predict_years)

# 6. 整理结果(可选,方便查看或保存)
result_df = pd.DataFrame({
    'year': predict_years.flatten(),
    'predicted_pop': predicted_pops
})
print(result_df)
# 也可以保存到CSV文件
# result_df.to_csv('未来人口预测结果.csv', index=False)

注意事项

  • 线性回归假设人口随年份呈线性增长,如果实际人口增长是非线性的(比如指数增长),预测结果可能会有较大偏差。若需要更准确的预测,可以尝试非线性模型(比如多项式回归、指数回归)。
  • 超出数据集范围的预测属于外推,可靠性会随年份远离原数据范围而降低,这是所有预测模型的固有局限。

内容的提问来源于stack exchange,提问作者Remixt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:35:24