跳转到主要内容
2.2.4 · 建议 20 分钟 · 满分 26

低碳生活行为影响因素预测线性回归模型开发与测试

背景

在应对气候变化的背景下,了解和促进低碳生活行为变得越来越重要。现要求根据提供的“大学生低碳生活行为的影响因素数据集”,补全2.2.4.ipynb代码。选择合适的特征,开发一个预测大学生低碳生活行为的模型。利用测试工具对模型进行测试,并对测试结果进行分析,完成测试报告,并运用工具对错误原因进行纠正。

工作任务

  1. 正确加载数据集,并显示前五行的数据。
  2. 请使用线性回归模型,要求设定自变量和因变量,并根据自变量特征进行模型训练,最终将训练好的模型以文件名 2.2.4_model.pkl 保存到考生文件夹,结果文件以 2.2.4_results.txt 保存到考生文件夹。
  3. 使用测试工具对模型进行测试,并记录测试结果,命名 2.2.4_report.txt,保存到考生文件夹。
  4. 对测试结果进行详细分析,并编写测试报告,包括模型性能评估、错误分析及改进建议,将答案写到答题卷文件中,答题卷文件命名为 2.2.4.docx,保存到考生文件夹。
  5. 运用工具分析算法中错误案例产生的原因并进行纠正,重新得到模型训练结果,以文件名 2.2.4_results_xg.txt 保存到考生文件夹。

素材预览

大学生低碳生活行为的影响因素数据集.xlsx
二进制文件,见素材包

代码填空

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
import joblib
from xgboost import XGBRegressor

# 加载数据集
data = 

# 显示数据集的前五行
print()

# 删除不必要的列并处理分类变量
data_cleaned = (=['序号', '所用时间'])  # 删除不必要的列
data_cleaned = pd.get_dummies(data_cleaned, drop_first=True)  # 将分类变量转换为哑变量/指示变量

# 定义目标变量和特征
target = '5.您进行过绿色低碳的相关生活方式吗?'  # 确保这是目标变量

# 定义自变量和因变量
X = (=)
y = 

# 将数据拆分为训练集和测试集(测试集占20%)
X_train, X_test, y_train, y_test = (, random_state=42)

# 初始化线性回归模型
model = 
# 训练线性回归模型


# 保存训练好的模型
model_filename = '2.2.4_model.pkl'
joblib.

# 进行预测
y_pred = 

# 将结果保存到文本文件中
results = pd.DataFrame({'实际值': y_test, '预测值': y_pred})
results_filename = '2.2.4_results.txt'
(, index=False, sep='\t')  # 使用制表符分隔值保存到文本文件

# 将测试结果保存到报告文件中
report_filename = '2.2.4_report.txt'
with open(report_filename, 'w') as f:
    f.write(f'均方误差: {}\n')
    f.write(f'决定系数: {}\n')
    
# 分析并纠正错误(示例:使用XGBoost)
# 初始化XGBoost模型(设定树的数量为1000,学习率为0.05,每棵树的最大深度为5,)
xgb_model = (, subsample=0.8, colsample_bytree=0.8)
# 训练XGBoost模型


# 使用XGBoost模型进行预测
y_pred_xg = 

# 将XGBoost结果保存到文本文件中
results_xg_filename = '2.2.4_results_xg.txt'
results_xg = pd.DataFrame({'实际值': y_test, '预测值': y_pred_xg})
results_xg.to_csv(results_xg_filename, index=False, sep='\t')  # 使用制表符分隔值保存到文本文件

# 将XGBoost测试结果保存到报告文件中
report_filename_xgb = '2.2.4_report_xgb.txt'
with open(report_filename_xgb, 'w') as f:
    f.write(f'均方误差: {}\n')
    f.write(f'决定系数: {}\n')