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 [ ]: