吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 233|回复: 4
收起左侧

[其他求助] 坛内有没有熟悉Python的高人,求助一段代码运行始终错误,如何是好?

[复制链接]
穿山甲龙 发表于 2026-1-8 17:05
25吾爱币
本帖最后由 穿山甲龙 于 2026-1-8 17:57 编辑

[td]
步骤
Python代码
说明
导入库
import pandas as pdimport numpy as npfrom sklearn.linear_model import LinearRegressionfrom sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error
导入必要的Python库
步骤1:数据预处理

1.1 数据加载
df = pd.read_csv('gas_station_data.csv')
读取数据文件
1.2 数据清洗
df = df.dropna()df = df[(df['加油量'] > 0) & (df['耗电量'] > 0)]
删除缺失值和异常值
1.3 特征工程
df['单位油耗电'] = df['耗电量'] / df['加油量']df['加油速度'] = df['加油量'] / (df['时长']/60)
创建新特征
1.4 数据分割
train_data = df.sample(frac=0.8, random_state=42)test_data = df.drop(train_data.index)
划分训练集和测试集
步骤2:简单线性回归

2.1 准备数据
X_simple = train_data[['加油量']]y_simple = train_data['耗电量']
选择特征和标签
2.2 训练模型
model_simple = LinearRegression()model_simple.fit(X_simple, y_simple)
训练简单线性回归模型
2.3 输出参数
print(f"截距(β0): {model_simple.intercept_:.5f} kWh")print(f"斜率(β1): {model_simple.coef_:.5f} kWh/L")print(f"R²: {model_simple.score(X_simple, y_simple):.3f}")
输出模型参数
2.4 预测示例
v_pred = np.array([, , ])e_pred = model_simple.predict(v_pred)
预测特定加油量的耗电量
步骤3:多元线性回归

3.1 数据预处理
df = pd.get_dummies(df, columns=['油品类型'], prefix='油品')
将油品类型转换为虚拟变量
3.2 准备特征
features = ['加油量', '时长', '环境温度', '油品_92#汽油', '油品_95#汽油', '油品_柴油']X_multi = train_data[features]y_multi = train_data['耗电量']
准备多元回归特征
3.3 训练模型
model_multi = LinearRegression()model_multi.fit(X_multi, y_multi)
训练多元线性回归模型
3.4 输出系数
for feature, coef in zip(features, model_multi.coef_):    print(f"{feature}: {coef:.5f}")
输出每个特征的系数
步骤4:模型验证

4.1 测试集预测
X_test = test_data[features]y_test = test_data['耗电量']y_pred = model_multi.predict(X_test)
在测试集上进行预测
4.2 计算评估指标
mse = mean_squared_error(y_test, y_pred)rmse = np.sqrt(mse)mae = mean_absolute_error(y_test, y_pred)r2 = r2_score(y_test, y_pred)
计算模型性能指标
4.3 计算相对误差
relative_error = np.mean(np.abs((y_test - y_pred) / y_test)) * 100print(f"平均相对误差: {relative_error:.1f}%")
计算平均相对误差
[td]
交易ID
时间戳
加油枪号
油品类型
加油量(L)
耗电量(kWh)
时长(s)
环境温度(℃)
TX001
2024-01-15 10:30:15
1
92#汽油
45.2
0.125
180
25
TX002
2024-01-15 10:32:40
2
95#汽油
32.8
0.095
120
25
TX003
2024-01-15 10:35:10
3
柴油
68.5
0.185
240
25
TX004
2024-01-15 10:38:20
1
92#汽油
28.3
0.082
140
26
TX005
2024-01-15 10:41:30
2
95#汽油
50.5
0.136
220
24
TX006
2024-01-15 10:45:15
3
柴油
42.3
0.115
200
25
TX007
2024-01-15 10:48:50
1
92#汽油
15.2
0.045
90
26
TX008
2024-01-15 10:51:10
2
95#汽油
38.7
0.105
180
24
TX009
2024-01-15 10:54:30
3
柴油
60.2
0.152
260
25
TX010
2024-01-15 10:58:20
1
92#汽油
22.1
0.067
120
26

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

avocado 发表于 2026-1-8 17:10
你的错误信息呢?
myfs 发表于 2026-1-8 17:38
这种小问题,直接错误信息扔给 AI  就解决了,AI 是无所不能的!!!
炫迈 发表于 2026-1-8 17:39
最明显的是预测示例那里np.array([, , ])这个写法语法错误,数组不能为空,应该填具体的加油量数值比如np.array([[30], [40], [50]])

数据加载也有问题,你下面给的示例数据是表格形式,但代码里直接读csv,建议先把示例数据存成gas_station_data.csv文件,注意列名要完全匹配,比如油品类型要和代码里的'油品类型'一致,我注意到示例数据里是92#汽油,但代码里用的是'油品_92#汽油'这种格式,需要先做数据清洗

特征工程那行df['加油速度'] = df['加油量'] / (df['时长']/60)计算单位是升/分钟,但时长是秒,除以60是对的,不过要确保时长列没有0值,否则会除零错误,建议加个异常处理

多元回归前的虚拟变量转换,pd.get_dummies会生成新列,但后面特征列表里写了'油品_92#汽油',实际生成的列名可能是'油品类型_92#汽油',要看具体输出,建议先打印df.columns看看

测试集预测那里X_test = test_data[features],但features是在训练集上定义的,如果测试集缺少某些油品类型会导致错误,最好用训练集生成的虚拟变量列名来筛选测试集
LLUU_f 发表于 2026-1-8 20:57
可以直接问ai的,更快帮你解决问题
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-1-13 15:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表