2.2.4

在应对气候变化的背景下,了解和促进低碳生活行为变得越来越重要。现要求根据提供的“大学生低碳生活行为的影响因素数据集”,补全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保存到考生文件夹。
(6)将以上代码以及运行结果,以html格式保存并命名为2.2.4.html,保存到考生文件夹,考生文件夹命名为“准考证号+身份证后6位”。

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')

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 = pd.read_excel('大学生低碳生活行为的影响因素数据集.xlsx')

# 显示数据集的前五行
print(data.head(5))

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

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

# 定义自变量和因变量
X = data_cleaned.drop(columns=[target])
y = data_cleaned[target]

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

# 初始化线性回归模型
model = LinearRegression()
# 训练线性回归模型
model.fit(X_train, y_train)

# 保存训练好的模型
model_filename = '2.2.4_model.pkl'
joblib.dump(model, model_filename)

# 进行预测
y_pred = model.predict(X_test)

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

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

# 使用XGBoost模型进行预测
y_pred_xg = xgb_model.predict(X_test)

# 将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'均方误差: {mean_squared_error(y_test, y_pred_xg)}\n')
    f.write(f'决定系数: {r2_score(y_test, y_pred_xg)}\n')
    print(f'均方误差: {mean_squared_error(y_test, y_pred_xg)}\n')
    print(f'决定系数: {r2_score(y_test, y_pred_xg)}\n')

序号 所用时间 1.您的性别○男性 ○女性 ... 重复利用废旧物品 避免使用一次性产品 劝说周围的人进行低碳生活
0 1 130秒 1 ... 4 4 3
1 2 82秒 1 ... 3 4 4
2 3 230秒 1 ... 4 3 3
3 4 96秒 1 ... 2 2 2
4 6 157秒 1 ... 5 4 3

[5 rows x 40 columns]
均方误差: 0.015184824537022135

决定系数: 0.4984109401702881