使用 KNN 模型预测信用卡使用意图的意义在于,它能够基于已知数据样本的特征和标签,构建一个由 k 个最近邻居组成的模型,从而对新的数据样本进行预测。

本代码示例展示了 KNN 模型在信用卡使用意图预测中的应用。代码首先利用 KNeighborsClassifier 函数创建了一个 k 值为 5 的 KNN 模型。随后,使用 fit 函数将训练数据拟合到模型中。接着,通过 predict 函数对训练数据和测试数据进行预测,并使用 predict_proba 函数获取训练数据和测试数据的标签概率预测值。

最后,代码利用 roc_auc_score 函数计算训练集和测试集的 ROC 得分,并使用 classification_reportconfusion_matrix 函数分别计算训练集和测试集的分类报告和混淆矩阵。

结果表明,训练集的 ROC 得分为 0.8777,测试集的 ROC 得分为 0.7099。分类报告和混淆矩阵提供了训练集和测试集的精度、召回率、F1-score 和支持度等指标。这些结果可以用来评估 KNN 模型的性能以及它在预测信用卡使用意图方面的准确性。

代码详解:

print('****************************************************')
print('Results for model :  KNN')
from sklearn import neighbors
KNN=neighbors.KNeighborsClassifier(n_neighbors=5)
KNN.fit(x_train, y_train)
y_train_pred = KNN.predict(x_train)
y_train_prob = KNN.predict_proba(x_train)[:, 1] 
print('ROC score for train is :', roc_auc_score(y_train, y_train_prob))
print('Classification report for train:
')
print(classification_report(y_train, y_train_pred))
print(confusion_matrix(y_train, y_train_pred))
y_test_pred = KNN.predict(x_test)
y_test_prob = KNN.predict_proba(x_test)[:, 1]
print('ROC score for test is :', roc_auc_score(y_test, y_test_prob))
print('Classification report for test :
')
print(classification_report(y_test, y_test_pred))
print(confusion_matrix(y_test, y_test_pred))

代码功能:

  • 导入库: from sklearn import neighbors 导入 KNN 模型库。
  • 创建模型: KNN=neighbors.KNeighborsClassifier(n_neighbors=5) 创建一个 KNN 模型,k 值设为 5。
  • 模型训练: KNN.fit(x_train, y_train) 使用训练数据对模型进行训练。
  • 训练集预测: y_train_pred = KNN.predict(x_train) 对训练数据进行预测。
  • 训练集概率预测: y_train_prob = KNN.predict_proba(x_train)[:, 1] 获取训练数据标签概率预测值。
  • 训练集 ROC 得分: print('ROC score for train is :', roc_auc_score(y_train, y_train_prob)) 计算训练集的 ROC 得分。
  • 训练集分类报告: print('Classification report for train: ') print(classification_report(y_train, y_train_pred)) 打印训练集的分类报告。
  • 训练集混淆矩阵: print(confusion_matrix(y_train, y_train_pred)) 打印训练集的混淆矩阵。
  • 测试集预测: y_test_pred = KNN.predict(x_test) 对测试数据进行预测。
  • 测试集概率预测: y_test_prob = KNN.predict_proba(x_test)[:, 1] 获取测试数据标签概率预测值。
  • 测试集 ROC 得分: print('ROC score for test is :', roc_auc_score(y_test, y_test_prob)) 计算测试集的 ROC 得分。
  • 测试集分类报告: print('Classification report for test : ') print(classification_report(y_test, y_test_pred)) 打印测试集的分类报告。
  • 测试集混淆矩阵: print(confusion_matrix(y_test, y_test_pred)) 打印测试集的混淆矩阵。

结果说明:

  • 训练集 ROC 得分较高 (0.8777),表明模型在训练数据上的预测能力较好。
  • 测试集 ROC 得分略低 (0.7099),说明模型在未见过的数据上的预测能力有所下降。
  • 分类报告和混淆矩阵提供了更详细的指标,例如精度、召回率、F1-score 等,可用于评估模型的预测准确性和可靠性。

总体来说,KNN 模型在信用卡使用意图预测方面表现出了一定的效果。然而,训练集和测试集之间的性能差距表明,模型可能存在过拟合的问题,需要进一步优化以提高模型的泛化能力。


原文地址: https://www.cveoy.top/t/topic/fVLV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录