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
# 加载数据集
file_path = '大学生低碳生活行为的影响因素数据集.xlsx' # 替换为实际的数据集文件路径
data = pd.read_excel(file_path)
# 显示数据集的前五行
print(data.head())
# 删除不必要的列并处理分类变量
data_cleaned = data.drop(columns=['序号', '所用时间']) # 删除不必要的列
代码解释:
drop,dropna、drop_duplicates的区别
-
drop
:用于删除指定的行或列,不涉及缺失值。 -
dropna
:用于删除包含缺失值的行或列,不涉及指定的行或列。 -
drop_duplicates:用于删除重复
# 定义自变量因变量
# 定义目标变量和特征
target = '5.您进行过绿色低碳的相关生活方式吗?' # 确保这是目标变量
features = data_cleaned.drop(columns=[target]) #清除因变量
X = __________
y = data_cleaned[__________]
---
X = features
y = data_cleaned[target]
代码解释:
x是自变量,y是因变量。目标变量是因变量。
所以,y是target
# 将数据拆分为训练集和测试集
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.__________(model, model_filename)
---
joblib.dump(model, model_filename)
# 进行预测
y_pred = model.predict(X_test)
results.to_csv(results_filename, index=False, sep='\t') # 使用制表符分隔值保存到文本文件
f.write(f'均方误差: {mean_squared_error(y_test, y_pred)}\n')
f.write(f'决定系数: {r2_score(y_test, y_pred)}\n')
# 分析并纠正错误(示例:使用XGBoost)
# 训练XGBoost模型
xgb_model = __________(
n_estimators=1000, # 增加树的数量
__________=0.05, # 降低学习率
max_depth=5, # 调整树的深度
subsample=0.8, # 调整样本采样比例
colsample_bytree=0.8 # 调整特征采样比例
)
----
xgb_model = XGBRegressor(
learning_rate=0.05, # 降低学习率
代码解释:降低学习率learning_rate,记
# 将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')
代码解释: