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

如何用LinearRegression预测每月受害者总数?数据处理与建模求助

解决方案步骤

1. 统计每月受害者总数

先从原数据集按年份+月份分组,统计每月的受害者总数。假设数据集每行对应一个受害者,用groupby配合size()计算:

# 按年、月分组,统计每月受害者总数,生成新DataFrame
monthly_victims = df_pre.groupby(['Year', 'Month']).size().reset_index(name='Total_Victims')

如果有专门记录单条数据受害者数量的列(比如Victim_Count),则用sum()求和:

monthly_victims = df_pre.groupby(['Year', 'Month'])['Victim_Count'].sum().reset_index(name='Total_Victims')

生成的monthly_victims包含Year、Month、Total_Victims三列,维度完全匹配后续建模需求。

2. 训练线性回归模型

明确模型的特征(X)和目标变量(y):

  • 特征:选择Year和Month作为时间维度的输入(仅用月份会忽略年度趋势,建议保留年份)
  • 目标:每月受害者总数Total_Victims

注意:sklearn的fit方法要求特征必须是二维数组,需用双层方括号[[]]包裹列名,避免维度不匹配错误:

from sklearn.linear_model import LinearRegression

# 初始化模型
reg = LinearRegression()

# 准备特征与目标变量
X = monthly_victims[['Year', 'Month']]
y = monthly_victims['Total_Victims']

# 训练模型
reg.fit(X, y)

3. 常见问题说明

  • 维度不匹配:之前出错是因为传入的特征是一维Series(比如df_pre['Month']),改用双层方括号[['Month']]即可转为二维DataFrame,解决维度问题。
  • 用Vict Age拟合错误:Vict Age是单个受害者的年龄,与每月总数无直接线性关联,必须先聚合为月度总数再建模。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:42:09