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

如何复用单城市Linear Regression代码批量预测513城食用油支出

多城市批量食用油支出预测实现方案

你写好的Simeulue市单城市一元线性回归逻辑完全可以复用,不需要给每个城市单独写代码,只要加一层分组遍历逻辑,就能一次性跑完所有城市的2022年预测,步骤如下:

1. 先确认数据集格式

确保你的原始数据集是长表结构,至少包含三列:

  • 城市名称列(比如列名city):存每个城市的名称
  • 年份列(比如列名year):存2018-2021的年份值,也就是模型自变量
  • 食用油支出列(比如列名expense_rupiah):存对应城市对应年份的印尼盾计价支出金额,也就是模型因变量
    如果你的数据是宽表(每一列对应一个年份,每行是一个城市),先转成长表再往下走,不然没法分组。

2. 把单城市建模逻辑封装成可复用函数

核心建模步骤和你之前跑Simeulue市的代码完全一致,只是包成函数方便反复调用,输入是单个城市的4年历史数据,输出是该城市的预测结果和模型参数,参考代码:

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

def get_city_pred(city_subdf):
    # 整理模型输入格式,和你单城市建模的处理逻辑完全一样
    X = city_subdf['year'].values.reshape(-1, 1)
    y = city_subdf['expense_rupiah'].values
    # 拟合模型
    lr = LinearRegression()
    lr.fit(X, y)
    # 输出2022年预测值,同时返回斜率、截距方便后续校验
    return {
        "city_name": city_subdf['city'].iloc[0],
        "pred_2022_expense": round(lr.predict(np.array([[2022]]))[0], 2),
        "coef": lr.coef_[0],
        "intercept": lr.intercept_
    }

3. 按城市分组批量遍历,一次性生成所有结果

用pandas的groupby按城市名称拆分数据集,自动把每个城市的4年数据喂给上面的函数,所有结果直接汇总成表:

result = []
# 遍历每个城市的分组数据
for city_name, city_data in df.groupby('city'):
    # 自动跳过历史记录不足4年的异常城市,避免报错
    if len(city_data) < 4:
        print(f"[警告] 城市{city_name}历史数据不足4年,已跳过")
        continue
    result.append(get_city_pred(city_data))

# 转成DataFrame格式,后续筛选、导出、分析都可以直接用
pred_df = pd.DataFrame(result)

校验提示

跑完之后先在结果里找Simeulue市的预测值,和你之前手动建模得到的结果做对比,数值完全一致就说明批量逻辑没有问题。如果需要生成每个城市的拟合效果图,直接在遍历循环里加你之前写的单城市绘图代码就行,保存图片的时候用城市名命名文件,不会出现覆盖问题。
514个城市(含你已经跑过的Simeulue)的计算量非常小,普通笔记本环境下几秒钟就能跑完,不需要额外做性能优化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:09:16