In [5]:
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())
# 删除不必要的列并处理分类变量
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')
序号 所用时间 1.您的性别○男性 ○女性 2.您的年级○大一 ○大二 ○大三 ○大四 \ 0 1 130秒 1 2 1 2 82秒 1 2 2 3 230秒 1 2 3 4 96秒 1 2 4 6 157秒 1 2 3.您的生源地○农村 ○城镇(乡镇) ○地县级城市 ○省会城市及直辖市 \ 0 2 1 3 2 3 3 2 4 1 4.您的月生活费○≦1,000元 ○1,001-2,000元 ○2,001-3,000元 ○≧3,001元 \ 0 2 1 2 2 2 3 2 4 2 5.您进行过绿色低碳的相关生活方式吗? 6.您觉得“低碳”,与你的生活关系密切吗? 7.低碳生活是否会成为未来的主流生活方式? \ 0 1 1 1 1 1 1 2 2 1 1 2 3 2 2 2 4 1 1 2 8.您是否认为低碳生活会提高您的生活质量? ... 我有机会执行低碳生活 我有足够知识进行低碳生活 14.我打算以后…—减少使用一次性产品 \ 0 2 ... 5 5 4 1 2 ... 5 4 4 2 3 ... 3 3 4 3 2 ... 2 2 2 4 2 ... 5 4 5 合理处理生活中的废弃物 在日常生活中会进行垃圾分类 尽可能劝说周围的人进行低碳生活 15.日常生活中,我会......—对垃圾进行分类 \ 0 4 3 3 3 1 3 4 5 4 2 5 3 3 3 3 5 2 2 2 4 5 5 5 5 重复利用废旧物品 避免使用一次性产品 劝说周围的人进行低碳生活 0 4 4 3 1 3 4 4 2 4 3 3 3 2 2 2 4 5 4 3 [5 rows x 40 columns]
In [ ]: