信用卡持卡人风险预测

PandasBeginner
立即练习

介绍

在这个项目中,你将学习如何构建一个机器学习分类模型,以预测信用卡持卡人的风险状况。该项目涉及数据预处理、训练支持向量机(SVM)模型,并将预测结果保存到 CSV 文件中。

🎯 任务

在这个项目中,你将学习:

  • 如何通过对非数字特征进行标签编码来准备数据
  • 如何使用训练数据训练机器学习分类模型
  • 如何将预测结果保存到 CSV 文件中

🏆 成果

完成这个项目后,你将能够:

  • 为机器学习任务预处理和准备数据
  • 训练支持向量机(SVM)分类模型
  • 将预测结果保存到 CSV 文件中

准备数据

在这一步中,你将学习如何从 CSV 文件中读取训练和测试数据,并对非数字特征进行标签编码。

  1. 在代码编辑器中打开 predict.py 文件。

  2. getData() 函数中,完成以下任务:

    • 使用 pd.read_csv()credit_risk_train.csv 文件中读取训练数据。
    • 使用 pd.read_csv()credit_risk_test.csv 文件中读取测试数据。
    • 调用 label() 函数对训练和测试数据中的非数字特征进行标签编码。
    • 将训练数据拆分为 x_trainy_trainx_testy_test
def getData():
    """
    Read data from csv files. And split the train data into train and test for validation.
    """
    ## 步骤 1. 从 csv 文件中读取数据
    data = pd.read_csv(trainfile)
    test = pd.read_csv(testfile)

    ## 步骤 2. 标签编码
    data = label(data)
    test = label(test)

    ## 步骤 3. 将训练数据拆分为训练集和测试集
    x_train, y_train = data.iloc[:, :-1].to_numpy(), data.iloc[:, -1].to_numpy()
    x_test = test.iloc[:, :].to_numpy()
    y_test = None
    return x_train, y_train, x_test, y_test
  1. label() 函数中,完成标签编码过程的实现:
    • 遍历数据中的每一列。
    • 如果列的数据类型是 object,创建一个 LabelEncoder 实例并将其拟合到列数据上。
    • 如果列名是 "RISK",将 LabelEncoder 实例存储在 convertor 变量中。
    • 使用 LabelEncoder 实例转换列数据并更新数据中的列。
    • 返回更新后的数据。
def label(data):
    """
    Use label encoding to process the non-numeric features.
    """
    global convertor
    for col in data.columns:
        if data[col].dtype == "object":
            le = LE()
            if col == "RISK":
                convertor = le
            le.fit(data[col])
            data[col] = le.transform(data[col])
    return data

完成这一步后,你将准备好用于下一步的训练和测试数据。

训练模型

在这一步中,你将学习如何使用训练数据训练机器学习分类模型。

  1. predict() 函数中,完成以下任务:
    • sklearn.svm 模块创建一个 SVC 模型的实例。
    • 使用 fit() 方法将模型拟合到 x_trainy_train 数据上。
def predict(model=MODEL):
    """
    Use the model to predict the result.
    """
    ## 步骤 1. 获取模型
    predictor = model()
    ## 步骤 2. 获取数据
    x_train, y_train, x_test, _ = getData()
    ## 步骤 3. 训练模型
    predictor.fit(x_train, y_train)
    ## 步骤 4. 预测并保存
    res = predictor.predict(x_test)
    save(res)

完成这一步后,模型将被训练好,并准备好对测试数据进行预测。

保存预测结果

在这一步中,你将学习如何将预测结果保存到 credit_risk_pred.csv 文件中。

  1. save() 函数中,完成以下任务:
    • 使用 convertor 变量将预测结果反向转换回原始标签。
    • 创建一个包含预测结果的 Pandas DataFrame,并使用 pd.DataFrame().to_csv() 将其保存到 credit_risk_pred.csv 文件中。
def save(result):
    """
    Save the result to csv file.
    """
    result = convertor.inverse_transform(result)
    dataframe = pd.DataFrame({"RISK": result})
    dataframe.to_csv("credit_risk_pred.csv", index=False, sep=",")

完成这一步后,预测结果将被保存到 credit_risk_pred.csv 文件中。

运行预测

在这最后一步中,你将运行预测过程并检查输出。

  1. if __name__ == "__main__": 代码块中,调用 predict() 函数来运行预测过程。
  2. 在终端中,使用以下命令运行 predict.py 文件:
python3 predict.py
  1. 运行 predict.py 文件后,你应该会看到以下输出:
Predict done!
  1. 检查项目目录中的 credit_risk_pred.csv 文件。它应该包含测试数据的预测结果。

恭喜你!你已成功完成信用卡持卡人风险预测项目。你已经学会了如何:

  • 通过对非数字特征进行标签编码来准备数据
  • 使用训练数据训练机器学习分类模型
  • 将预测结果保存到 CSV 文件中

总结

恭喜你!你已经完成了这个项目。你可以在实验平台(LabEx)上练习更多实验来提升你的技能。

✨ 查看解决方案并练习✨ 查看解决方案并练习✨ 查看解决方案并练习✨ 查看解决方案并练习