介绍
在这个项目中,你将学习如何构建一个机器学习分类模型,以预测信用卡持卡人的风险状况。该项目涉及数据预处理、训练支持向量机(SVM)模型,并将预测结果保存到 CSV 文件中。
🎯 任务
在这个项目中,你将学习:
- 如何通过对非数字特征进行标签编码来准备数据
- 如何使用训练数据训练机器学习分类模型
- 如何将预测结果保存到 CSV 文件中
🏆 成果
完成这个项目后,你将能够:
- 为机器学习任务预处理和准备数据
- 训练支持向量机(SVM)分类模型
- 将预测结果保存到 CSV 文件中
准备数据
在这一步中,你将学习如何从 CSV 文件中读取训练和测试数据,并对非数字特征进行标签编码。
在代码编辑器中打开
predict.py文件。在
getData()函数中,完成以下任务:- 使用
pd.read_csv()从credit_risk_train.csv文件中读取训练数据。 - 使用
pd.read_csv()从credit_risk_test.csv文件中读取测试数据。 - 调用
label()函数对训练和测试数据中的非数字特征进行标签编码。 - 将训练数据拆分为
x_train、y_train、x_test和y_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
- 在
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
完成这一步后,你将准备好用于下一步的训练和测试数据。
训练模型
在这一步中,你将学习如何使用训练数据训练机器学习分类模型。
- 在
predict()函数中,完成以下任务:- 从
sklearn.svm模块创建一个SVC模型的实例。 - 使用
fit()方法将模型拟合到x_train和y_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 文件中。
- 在
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 文件中。
运行预测
在这最后一步中,你将运行预测过程并检查输出。
- 在
if __name__ == "__main__":代码块中,调用predict()函数来运行预测过程。 - 在终端中,使用以下命令运行
predict.py文件:
python3 predict.py
- 运行
predict.py文件后,你应该会看到以下输出:
Predict done!
- 检查项目目录中的
credit_risk_pred.csv文件。它应该包含测试数据的预测结果。
恭喜你!你已成功完成信用卡持卡人风险预测项目。你已经学会了如何:
- 通过对非数字特征进行标签编码来准备数据
- 使用训练数据训练机器学习分类模型
- 将预测结果保存到 CSV 文件中
总结
恭喜你!你已经完成了这个项目。你可以在实验平台(LabEx)上练习更多实验来提升你的技能。



