{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "de3c1194",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.ensemble import RandomForestRegressor\n",
    "import pickle\n",
    "from sklearn.metrics import mean_squared_error, r2_score\n",
    "import xgboost as xgb\n",
    "\n",
    "# 加载数据集\n",
    "df = __________\n",
    "\n",
    "# 显示前五行数据\n",
    "print(__________)\n",
    "\n",
    "# 去除所有字符串字段的前后空格\n",
    "df = df.applymap(lambda x: x.strip() if isinstance(x, str) else x)\n",
    "\n",
    "# 检查和清理列名\n",
    "df.columns = df.columns.str.strip()\n",
    "\n",
    "# 选择相关特征进行建模\n",
    "X = df[['Your gender', 'How important is exercise to you ?', 'How healthy do you consider yourself?']]\n",
    "X = __________(X)  # 将分类变量转为数值变量\n",
    "\n",
    "# 将年龄段转为数值变量\n",
    "y = __________(lambda x: int(x.split(' ')[0]))  # 假设年龄段为整数\n",
    "\n",
    "# 将数据集划分为训练集和测试集（测试集占比20%）\n",
    "X_train, X_test, y_train, y_test = __________(__________, random_state=42)\n",
    "\n",
    "# 创建随机森林回归模型（创建的决策树的数量为100）\n",
    "rf_model = __________(__________, random_state=42)\n",
    "# 训练随机森林回归模型\n",
    "__________\n",
    "\n",
    "# 保存训练好的模型\n",
    "with open('2.2.3_model.pkl', 'wb') as model_file:\n",
    "    pickle.__________\n",
    "\n",
    "# 进行结果预测\n",
    "y_pred = __________\n",
    "results_df = pd.DataFrame(y_pred, columns=['预测结果'])\n",
    "results_df.to_csv('2.2.3_results.txt', index=False)\n",
    "\n",
    "# 使用测试工具对模型进行测试，并记录测试结果\n",
    "train_score = __________   #训练集分数\n",
    "test_score = __________    #测试集分数\n",
    "mse = __________  #均方误差\n",
    "r2 = __________  #决定系数\n",
    "with open('2.2.3_report.txt', 'w') as report_file:\n",
    "    report_file.write(f'训练集得分: {train_score}\\n')\n",
    "    report_file.write(f'测试集得分: {test_score}\\n')\n",
    "    report_file.write(f'均方误差(MSE): {mse}\\n')\n",
    "    report_file.write(f'决定系数(R^2): {r2}\\n')\n",
    "\n",
    "# 运用工具分析算法中错误案例产生的原因并进行纠正\n",
    "# 初始化XGBoost回归模型（构建100棵树）\n",
    "xgb_model = __________(__________, random_state=42)\n",
    "# 训练XGBoost回归模型\n",
    "__________\n",
    "# 使用XGBoost回归模型在测试集上进行结果预测\n",
    "y_pred_xgb = __________\n",
    "\n",
    "results_df_xgb = pd.DataFrame(y_pred_xgb, columns=['预测结果'])\n",
    "results_df_xgb.to_csv('2.2.3_results_xgb.txt', index=False)\n",
    "\n",
    "with open('2.2.3_report_xgb.txt', 'w') as xgb_report_file:\n",
    "    xgb_report_file.write(f'XGBoost训练集得分: {__________}\\n')\n",
    "    xgb_report_file.write(f'XGBoost测试集得分: {__________}\\n')\n",
    "    xgb_report_file.write(f'XGBoost均方误差(MSE): {__________}\\n')\n",
    "    xgb_report_file.write(f'XGBoost决定系数(R^2): {__________)}\\n')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "87d79ede",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
