datawhale AI训练营 task01

十分钟速通baseline操作

 启用魔搭cpu环境,直接启动Notebook:https://modelscope.cn/my/mynotebook/presets

上传baseline文件,及相关数据集,一键运行所有代码,下载运行后文件

相关代码

导入相关库

!pip install numpy pandas scikit-learn matplotlib seaborn
import numpy as np
import pandas as pd
from pathlib import Path
from sklearn.linear_model import LinearRegression

 数据处理

base_path = Path("data")  # 确保数据都放在同级的data目录下

# 读取市场数据
electricity_price = pd.read_csv(base_path / "electricity price.csv")
# 读取市场主体(各发电机组)数据
unit = pd.read_csv(base_path / "unit.csv")

sample_submit = electricity_price[electricity_price["clearing price (CNY/MWh)"].isna()].drop(columns="demand")
sample_submit.to_csv(base_path / "sample_submit.csv", index=False)

# 将day和time列合并成timestamp列,便于提取时间戳特征
electricity_price["timestamp"] = pd.to_datetime(
    electricity_price["day"] + " " + electricity_price["time"].str.replace("24:00:00", "00:00"))

# 处理24:00:00的情况,即表示第二天的00:00:00
mask = electricity_price['timestamp'].dt.time == pd.Timestamp('00:00:00').time()

# 需要将这些行的日期部分加一天
electricity_price.loc[mask, 'timestamp'] += pd.Timedelta(days=1)

# 设置列的顺序,同时去除day和time列
electricity_price = electricity_price[["timestamp", "demand", "clearing price (CNY/MWh)"]]

electricity_price.head()  # 显示前5行数据

以上进行了简单的数据清洗工作,将时间相关列进行整合,以便更好地进行数据分析工作

使用ABM估计市场出清价格

       AMB模型通常指的是“代理-建模-行为”(Agent-Model-Behavior)模型,这是一种用于描述和分析复杂系统的框架。在该模型中,“代理”代表系统中的个体或实体,“建模”涉及对这些代理及其相互作用进行描述,而“行为”则反映了这些代理在特定环境下的动态表现。

       在此模型中,市场的主体是发电机组,每个机组都被视为一个代理。每个代理都有其自身的特性,例如边际成本、产能、技术水平等。它们根据自己的边际成本决定报价,而不考虑市场信息或其他机组的行为。这种行为在经济学中常被描述为完全竞争市场的特征,即每个参与者都在追求最大化利润,且价格在长期内趋于边际成本。

sorted_unit = unit.sort_values("coal consumption (g coal/KWh)")  # 按照一度电的耗煤量(近似为边际成本)降序排序
sorted_unit.head()

# 预先计算 sorted_unit 的累积和
sorted_unit['cumulative_capacity'] = sorted_unit['Capacity(MW)'].cumsum()

prices = []

# 找到最后一个满足总需求的机组报价
for demand in electricity_price["demand"]:
    price = sorted_unit[sorted_unit['cumulative_capacity'] >= demand]["coal consumption (g coal/KWh)"].iloc[0]
    prices.append(price)

print(len(prices))
prices[:5]

 转换耗煤量为机组报价

model = LinearRegression()
# 55392为训练集的长度
train_length = 55392
prices = np.array(prices).reshape(-1, 1)
X = prices[:train_length]
y = electricity_price["clearing price (CNY/MWh)"].iloc[:train_length].values.reshape(-1, 1)
model. Fit(X, y)



model.coef_, model. Intercept_



y_pred = model.predict(prices[train_length:])
y_pred = y_pred.flatten()  # 2维矩阵转为1维
y_pred[:5]

保存结果 

sample_submit["clearing price (CNY/MWh)"] = y_pred
sample_submit.head()



sample_submit.to_csv("submit.csv", index=False)

 收获

        通过运行代码初步大概的了解到了ABM模型概念及运用。代理基础模型(Agent-Based Modeling, ABM)在经济学领域的应用日渐广泛,它允许研究者模拟经济主体(如消费者、生产者、金融机构等)之间的相互作用和这些相互作用如何影响整体经济系统。

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值