好友
阅读权限10
听众
最后登录1970-1-1
|
穿山甲龙
发表于 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 |
| | | | | | | | | |
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|
|