{
  "schemaVersion": 1,
  "id": "2.2.3",
  "title": "日常运动量随机森林预测模型开发与测试",
  "durationMinutes": 20,
  "category": "模型开发与测试",
  "scenario": "随着人们健康意识的增强，越来越多的人开始关注日常运动和健康管理。使用提供的训练数据，补全2.2.3.ipynb代码。选择合适的特征，开发一个预测模型，基于个体性别，个体对运动的看法和个人健康评价来预测个体年龄。利用测试工具对模型进行测试，并对测试结果进行分析，完成测试报告，并运用工具对错误原因进行纠正。\n\n详细说明如下：\n\n| 变量名 | 描述 | 类型 |\n|:--------------------------------------------------:|:----------------------------------------------:|:--------:|\n| Timestamp | 记录条目时间 | datetime |\n| Your name | 参与者姓名 | string |\n| Your gender | 参与者性别 | string |\n| Your age | 参与者年龄 | string |\n| How important is exercise to you? | 锻炼对你的重要性 | integer |\n| How do you describe your current level of fitness? | 描述你目前的健康水平 | string |\n| How often do you exercise? | 你多久锻炼一次 | string |\n| Barriers to exercise | 阻碍你定期锻炼的障碍（如时间不足、动力不足等） | string |\n| Forms of exercise | 目前参与的锻炼形式（如跑步、游泳等） | string |\n| Factors affecting fitness | 影响健康的因素（如对快餐的易得性、诱惑等） | string |\n| How healthy do you consider yourself? | 你认为自己有多健康 | integer |\n| Recommended fitness routine to friends? | 你是否曾推荐朋友遵循健身计划 | string |\n| Purchased fitness equipment? | 你是否曾购买过健身设备 | string |\n| Motivations to exercise | 激励你锻炼的因素（如为了健康、减肥等） | string |\n\n（1）正确加载数据集，并显示前五行的数据\n\n（2）使用随机森林模型进行模型训练，要求设定自变量和因变量，并根据自变量特征进行模型训练，最终将训练好的模型以文件名2.2.3_model.pkl保存到考生文件夹，结果文件以2.2.3_results.txt保存到考生文件夹。\n\n（3）使用测试工具对模型进行测试，并记录测试结果，命名2.2.3_report.txt，保存到考生文件夹\n\n（4）对测试结果进行详细分析，并编写测试报告，包括模型性能评估、错误分析及改进建议，将答案写到答题卷文件中，答题卷文件命名为“2.2.3.xlsx”，保存到考生文件夹。\n\n（5）运用工具分析算法中错误案例产生的原因并进行纠正，重新得到模型训练结果，以文件名2.2.3_results_xgb.txt保存到考生文件夹。\n\n（6）将以上代码以及运行结果，以html格式保存并命名为2.2.3.html，保存到考生文件夹，考生文件夹命名为“准考证号+身份证后6位”。",
  "skillRequirements": "(1) 能够维护日常训练集与测试集。\n\n(2) 能使用工具对算法进行训练。\n\n(3) 能够使用测试工具对人工智能产品的使用进行测试。\n\n(4) 能够对测试结果进行分析，编写测试报告。\n\n(5) 能够运用工具，分析算法中错误案例产生的原因并进行纠正。",
  "qualityIndicators": "(1) 深入理解业务，训练符合业务需求的模型。\n\n(2) 数据预处理步骤完整，方法选择合理。\n\n(3) 代码实现正确，结果符合预期。\n\n(4) 测试结果分析全面，报告详细",
  "tasks": [
    {
      "id": "code-fill",
      "type": "code-fill",
      "title": "补全代码任务",
      "instructions": "依据公开题面和附件补全代码空位；仅检查完成度与提交格式，不公开标准内容。",
      "codeBlocks": [
        "import pandas as pd\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.ensemble import RandomForestRegressor\nimport pickle\nfrom sklearn.metrics import mean_squared_error, r2_score\nimport xgboost as xgb\n\n# 加载数据集\ndf = __________\n\n# 显示前五行数据\nprint(__________)\n\n# 去除所有字符串字段的前后空格\ndf = df.applymap(lambda x: x.strip() if isinstance(x, str) else x)\n\n# 检查和清理列名\ndf.columns = df.columns.str.strip()\n\n# 选择相关特征进行建模\nX = df[['Your gender', 'How important is exercise to you ?', 'How healthy do you consider yourself?']]\nX = __________(X)  # 将分类变量转为数值变量\n\n# 将年龄段转为数值变量\ny = __________(lambda x: int(x.split(' ')[0]))  # 假设年龄段为整数\n\n# 将数据集划分为训练集和测试集（测试集占比20%）\nX_train, X_test, y_train, y_test = __________(__________, random_state=42)\n\n# 创建随机森林回归模型（创建的决策树的数量为100）\nrf_model = __________(__________, random_state=42)\n# 训练随机森林回归模型\n__________\n\n# 保存训练好的模型\nwith open('2.2.3_model.pkl', 'wb') as model_file:\n    pickle.__________\n\n# 进行结果预测\ny_pred = __________\nresults_df = pd.DataFrame(y_pred, columns=['预测结果'])\nresults_df.to_csv('2.2.3_results.txt', index=False)\n\n# 使用测试工具对模型进行测试，并记录测试结果\ntrain_score = __________   #训练集分数\ntest_score = __________    #测试集分数\nmse = __________  #均方误差\nr2 = __________  #决定系数\nwith 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棵树）\nxgb_model = __________(__________, random_state=42)\n# 训练XGBoost回归模型\n__________\n# 使用XGBoost回归模型在测试集上进行结果预测\ny_pred_xgb = __________\n\nresults_df_xgb = pd.DataFrame(y_pred_xgb, columns=['预测结果'])\nresults_df_xgb.to_csv('2.2.3_results_xgb.txt', index=False)\n\nwith 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",
        ""
      ],
      "blanks": [
        {
          "id": "blank-1",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-2",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-3",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-4",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-5",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-6",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-7",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-8",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-9",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-10",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-11",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-12",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-13",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-14",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-15",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-16",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-17",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-18",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-19",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-20",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-21",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-22",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        },
        {
          "id": "blank-23",
          "block": 1,
          "placeholder": "__________",
          "gradingMode": "completion-and-format-only"
        }
      ]
    },
    {
      "id": "2-2-response",
      "type": "rubric-response",
      "title": "模型开发与测试报告",
      "instructions": "说明模型开发、测试和结果评价过程。",
      "sections": [
        {
          "id": "response",
          "label": "作答内容"
        }
      ],
      "rubric": [
        {
          "id": "criterion-1",
          "label": "数据划分与特征处理合理",
          "weight": 25
        },
        {
          "id": "criterion-2",
          "label": "模型选择和训练过程清晰",
          "weight": 25
        },
        {
          "id": "criterion-3",
          "label": "测试指标与题目目标匹配",
          "weight": 25
        },
        {
          "id": "criterion-4",
          "label": "包含误差分析、复现和改进建议",
          "weight": 25
        }
      ]
    },
    {
      "id": "artifact-submission",
      "type": "artifact-submission",
      "title": "选择结果文件",
      "instructions": "文件仅在本机选择并校验，不上传，也不持久化文件内容。",
      "items": [
        {
          "id": "artifact-1",
          "label": "提交文件：2.2.3_model.pkl",
          "filename": "2.2.3_model.pkl",
          "extensions": [
            ".pkl"
          ],
          "minCount": 1,
          "maxCount": 1,
          "maxSize": 104857600
        },
        {
          "id": "artifact-2",
          "label": "提交文件：2.2.3_results.txt",
          "filename": "2.2.3_results.txt",
          "extensions": [
            ".txt"
          ],
          "minCount": 1,
          "maxCount": 1,
          "maxSize": 104857600
        },
        {
          "id": "artifact-3",
          "label": "提交文件：2.2.3.xlsx",
          "filename": "2.2.3.xlsx",
          "extensions": [
            ".xlsx"
          ],
          "minCount": 1,
          "maxCount": 1,
          "maxSize": 104857600
        },
        {
          "id": "artifact-4",
          "label": "提交文件：2.2.3_results_xgb.txt",
          "filename": "2.2.3_results_xgb.txt",
          "extensions": [
            ".txt"
          ],
          "minCount": 1,
          "maxCount": 1,
          "maxSize": 104857600
        },
        {
          "id": "artifact-5",
          "label": "提交文件：2.2.3.html",
          "filename": "2.2.3.html",
          "extensions": [
            ".html"
          ],
          "minCount": 1,
          "maxCount": 1,
          "maxSize": 104857600
        }
      ]
    }
  ],
  "attachments": [
    {
      "name": "2.2.3.docx",
      "url": "assets/2.2.3/2.2.3.docx",
      "size": 15068,
      "sha256": "29c2815bea15084bc5ba44ec4a732c7e52ef58e8d03d4c6af76185ef7824ba0f",
      "mime": "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
    },
    {
      "name": "2.2.3.ipynb",
      "url": "assets/2.2.3/2.2.3.ipynb",
      "size": 3963,
      "sha256": "3ab437e15f270a3bf03e94b7f61491cdbe8e5d045342f0d3145ac644d1337111",
      "mime": "application/x-ipynb+json"
    },
    {
      "name": "2.2.3.md",
      "url": "assets/2.2.3/2.2.3.md",
      "size": 4400,
      "sha256": "56d9a2e95c4b5ba0548dfea4e7508fa10922147adfef831ea7a7faa8dbfe8397",
      "mime": "text/markdown"
    },
    {
      "name": "fitness analysis.csv",
      "url": "assets/2.2.3/fitness analysis.csv",
      "size": 166379,
      "sha256": "82427ce1064ecb1777e371b122ff15a16c941a66ecc534fb4e9a9f6cce16dff4",
      "mime": "text/csv"
    }
  ],
  "grading": {
    "mode": "completion-and-format-only"
  },
  "review": {
    "status": "approved",
    "notice": "由公开题面通用生成，未使用答案树。",
    "conflicts": []
  },
  "contentVersion": "7cc5eb1999702e4e"
}
