{
  "schemaVersion": 1,
  "id": "2.2.1",
  "title": "智能信用评分Logistic回归模型开发与测试",
  "durationMinutes": 20,
  "category": "模型开发与测试",
  "scenario": "互联网金融飞速发展，使得个人金融理财变得越来越容易。而其中信用评分技术是一种对贷款申请人（信用卡申请人）做风险评估分值的统计模型，可以根据客户提供的资料、客户的历史数据、第三方平台数据（芝麻分、京东、微信等），对客户的信用进行评估。现要求根据提供的finance数据集，补全2.2.1.ipynb代码。选择合适的特征，开发一个申请的评分模型，利用测试工具对模型进行测试，并对测试结果进行分析，完成测试报告，并运用工具对错误原因进行纠正。\n\n（1）正确加载数据集，显示前五行的数据。\n\n（2）使用Logistic模型进行模型训练，要求设定自变量和因变量，并根据自变量特征进行模型训练，最终将训练好的模型以文件名2.2.1_model.pkl保存到考生文件夹，结果文件以2.2.1_results.txt保存到考生文件夹。\n\n（3）使用测试工具对模型进行测试，并记录测试结果，命名2.2.1_report.txt，保存到考生文件夹\n\n（4）对测试结果进行详细分析，并编写测试报告，包括模型性能评估、错误分析及改进建议，将答案写到答题卷文件中，答题卷文件命名为“2.2.1.docx”，保存到考生文件夹。\n\n（5）运用工具分析算法中错误案例产生的原因并进行纠正，重新得到模型训练结果，以文件名2.2.1_results_xg.txt保存到考生文件夹。\n\n（6）将以上代码以及运行结果，以html格式保存并命名为2.2.1.html，保存到考生文件夹，考生文件夹命名为“准考证号+身份证后6位”。\n\n数据集说明：\n\nUnnamed: 0 - 索引号。\n\nSeriousDlqin2yrs - 个人在过去两年内是否出现过严重的拖欠（1 表示有严重拖欠，0 表示没有）。\n\nRevolvingUtilizationOfUnsecuredLines - 这是指个人未偿还的信用额度与总信用额度的比例。\n\nage - 客户的年龄。\n\nNumberOfTime30-59DaysPastDueNotWorse - 在过去一段时间内，贷款逾期30至59天的次数。\n\nDebtRatio - 债务比率。\n\nMonthlyIncome - 客户的月收入。\n\nNumberOfOpenCreditLinesAndLoans - 正在使用的信贷账户或贷款的数量。\n\nNumberOfTimes90DaysLate - 贷款逾期超过90天的次数。\n\nNumberRealEstateLoansOrLines - 持有的房地产相关贷款或信贷的数量。\n\nNumberOfTime60-89DaysPastDueNotWorse - 贷款逾期60至89天的次数。\n\nNumberOfDependents - 家庭中依赖该个人的人数。",
  "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.linear_model import LogisticRegression\nimport pickle\nfrom sklearn.metrics import classification_report\nfrom imblearn.over_sampling import SMOTE\n\n# 加载数据\ndata = __________\n\n# 显示前五行的数据\nprint(__________)\n\n# 选择自变量和因变量\nX = data.drop(['SeriousDlqin2yrs', 'Unnamed: 0'], axis=1)\ny = data['SeriousDlqin2yrs']\n\n# 分割训练集和测试集（测试集20%）\nX_train, X_test, y_train, y_test = __________(__________, random_state=42)\n\n# 训练Logistic回归模型（最大迭代次数为1000次）\nmodel = __________\n#训练 Logistic 回归模型\n__________\n\n# 保存模型\nwith open('2.2.1_model.pkl', 'wb') as file:\n    pickle.__________\n\n# 预测并保存结果\ny_pred = __________\npd.DataFrame(y_pred, columns=['预测结果']).to_csv('2.2.1_results.txt', index=False)\n\n# 生成测试报告\nreport = classification_report(y_test, y_pred, zero_division=1)\nwith open('2.2.1_report.txt', 'w') as file:\n    file.write(report)\n\n# 分析测试结果\naccuracy = __________\nprint(f\"模型准确率: {accuracy:.2f}\")\n\n# 处理数据不平衡\nsmote = SMOTE(random_state=42)\nX_resampled, y_resampled = __________\n\n# 重新训练模型\n__________\n# 重新预测\ny_pred_resampled = __________\n\n# 保存新结果\npd.DataFrame(y_pred_resampled, columns=['预测结果']).to_csv('2.2.1_results_xg.txt', index=False)\n\n# 生成新的测试报告\nreport_resampled = classification_report(y_test, y_pred_resampled, zero_division=1)\nwith open('2.2.1_report_xg.txt', 'w') as file:\n    file.write(report_resampled)\n\n# 分析新的测试结果\naccuracy_resampled = __________\nprint(f\"重新采样后的模型准确率: {accuracy_resampled:.2f}\")\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": "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.1_model.pkl",
          "filename": "2.2.1_model.pkl",
          "extensions": [
            ".pkl"
          ],
          "minCount": 1,
          "maxCount": 1,
          "maxSize": 104857600
        },
        {
          "id": "artifact-2",
          "label": "提交文件：2.2.1_results.txt",
          "filename": "2.2.1_results.txt",
          "extensions": [
            ".txt"
          ],
          "minCount": 1,
          "maxCount": 1,
          "maxSize": 104857600
        },
        {
          "id": "artifact-3",
          "label": "提交文件：2.2.1.docx",
          "filename": "2.2.1.docx",
          "extensions": [
            ".docx"
          ],
          "minCount": 1,
          "maxCount": 1,
          "maxSize": 104857600
        },
        {
          "id": "artifact-4",
          "label": "提交文件：2.2.1_results_xg.txt",
          "filename": "2.2.1_results_xg.txt",
          "extensions": [
            ".txt"
          ],
          "minCount": 1,
          "maxCount": 1,
          "maxSize": 104857600
        },
        {
          "id": "artifact-5",
          "label": "提交文件：2.2.1.html",
          "filename": "2.2.1.html",
          "extensions": [
            ".html"
          ],
          "minCount": 1,
          "maxCount": 1,
          "maxSize": 104857600
        }
      ]
    }
  ],
  "attachments": [
    {
      "name": "2.2.1.docx",
      "url": "assets/2.2.1/2.2.1.docx",
      "size": 15031,
      "sha256": "900c7d4b3c57958e5decf18cc479bb1e4b116fbaa693e35bddc644e12e6565f7",
      "mime": "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
    },
    {
      "name": "2.2.1.ipynb",
      "url": "assets/2.2.1/2.2.1.ipynb",
      "size": 3032,
      "sha256": "49895f3c20e222a0857f56587cd273aa12ec09810f6417a91ba684f7ce561811",
      "mime": "application/x-ipynb+json"
    },
    {
      "name": "2.2.1.md",
      "url": "assets/2.2.1/2.2.1.md",
      "size": 3389,
      "sha256": "76e468097fe974d1f8ba9cbfdf53063cead25934b0a5ca536615cb817e9a1e58",
      "mime": "text/markdown"
    },
    {
      "name": "finance数据集.csv",
      "url": "assets/2.2.1/finance数据集.csv",
      "size": 7777795,
      "sha256": "12aad75e1e14015d97b7b182f29ad7dde37190b56ff87a5f23b21b2912831cd3",
      "mime": "text/csv"
    }
  ],
  "grading": {
    "mode": "completion-and-format-only"
  },
  "review": {
    "status": "approved",
    "notice": "由公开题面通用生成，未使用答案树。",
    "conflicts": []
  },
  "contentVersion": "ec4bf49e1a285a28"
}
