,有一家名为Happy Customer Bank (快乐客户银行) 的银行,是一家中型私人银行,经营各类银行产品,如储蓄账户、往来账户、投资产品、信贷产品等。,该银行还向现有客户交叉销售产品,为此他们使用不同类型的通信方式,如电话、电子邮件、网上银行推荐、手机银行等。,在这种情况下,Happy Customer Bank 希望向现有客户交叉销售其信用卡。该银行已经确定了一组有资格使用这些信用卡的客户。,银行希望确定对推荐的信用卡表现出更高意向的客户。,该数据集主要包括:,在这里,我们的任务是构建一个能够识别对信用卡感兴趣的客户的模型。,导入必要的库,例如用于线性代数的 NumPy、用于数据处理的 Pandas、Seaborn 和用于数据可视化的 Matplotlib。,,加载数据集后,下一步是检查有关数据集的信息并清理数据集,包括检查形状、数据类型、唯一值、缺失值和异常值等。,在我们的数据集中,合并训练和测试文件后,我们有 351037 行,具有 12 个特征。,Credit_Product 特征中存在不少空值。,现在我们使用 fillna 方法来填充数据集中的空值。,我们删除了数据集中存在的所有空值。,接下来我们必须检查特征的数据类型。,观察得到:,将 Is_Active 列中的 Yes 更改为 1 并将 No 更改为 0 以将数据转换为浮点数。,,现在,为了将所有分类列更改为数字形式,我们使用标签编码。我们先简要了解标签编码到底是什么。,标签编码: 标签编码是指将标签转换为数字形式,以便将其转换为机器可读形式。它是一种用于处理分类变量的流行编码技术。,接下来使用标签编码器。,此时,我们可以删除不相关且对我们的数据集没有影响的特征。这里我们有两列要删除,即”ID”和”source”。让我们检查一下最新的输出。,,至此,我们观察到所有数据都是数字。,为了更加清晰地分析数据集,数据可视化是一个不可或缺的步骤。,首先,我们绘制了 dist计数图 以了解数据的分布。,年龄特征分布密度图,,观察得到:,性别特征的计数图,,观察得到:,目标变量计数图,本案例中的目标变量为 Is_Lead 特征。,,观察得到:,此处可以参考:机器学习中样本不平衡,怎么办?,接下来做一些双变量分析,以理解不同列之间的关系。,“职业”和”客户”,,观察得到:,近3个月内不同”客户的职业”的”客户活跃度”,,观察得到:,正如前所述,该数据集目标变量是不平衡的,需要进行平衡处理以建立有效的建模。,因此我们采用欠采样方法来处理平衡数据集。,接下来首先导入库,再将少数类和多数类分开。,观察得到:,多数类值为187437,少数类值为58288,两个类的比率为3.2。,现在,需要将少数类与过采样的多数类结合起来。,在此之后,我们必须计算新的类值计数。,观察得到:,此时需要将特征变量与目标变量分开,并拆分训练集及测试集。,现在,我在这里使用 Standard Scaler 对x的值进行标准化以使数据呈正态分布。,,本节我们使用多个分类模型并计算了精确度、召回率、ROC_AUC 分数和 F1 分数等指标。,本案例中使用的模型是:,现在,通过使用多种算法,计算并找出对数据集表现最好的最佳算法。,观察得到:,从所有初始模型性能来看,随机森林分类器的性能优于其他分类器,即具有最大准确度分数和最小标准差。,为了进一步提高模型准确性,需要进行超参数调整。,对于超参数调整, 选择使用网格搜索GridSearchCV 为模型找到最佳参数,以”n_estimators” 为例。,观察得到:,再次运行具有最佳参数的随机森林分类器,即 ‘n_estimators’ = 100。,观察得到:,将不同的性能指标进行可视化,例如混淆矩阵、分类报告和 AUC_ROC曲线 来查看模型性能。,混淆矩阵:,混淆矩阵是一种分类模型的性能测量技术。它是一种表格,有助于了解一组测试数据上的分类模型,因为它们的真实值是已知的。,,分类报告:,分类报告是一种性能评估指标。它用于显示训练分类模型的准确率、召回率、F1 分数和支持度。,AUC_ROC 曲线:,AUC_ROC 曲线 是在各种阈值设置下对分类问题的性能测量。ROC 是概率曲线,AUC 表示可分离性的程度或度量。它告诉模型能够在多大程度上区分类别。,,观察得到:,为了进一步提高预测准确性和 ROC_AUC 分数,尝试使用XGBoost 分类器, 因为它本质上非常适合不平衡分类问题。,由于本文篇幅较长,这里省略代码部分,仅显示输出结果。,对于 XGBoost 分类器预测结果,获得较好的 ROC_AUC 分数 (约0.87)。同样,为了查看模型性能可视化不同的性能指标。,混淆矩阵:,,分类报告:,AUC_ROC 曲线:,,观察得到:,为了避免数据集中过度拟合的问题,尝试使用分层 K折交叉验证器并使用 LGBM模型来预测基于分类的概率。,在这里,我使用了 10 个具有不同参数的分层k折交叉验证。,运行LGBM算法后,得到一个不错的 ROC_AUC分数(约0.87)。接下来使用不同指标检验模型性能。,混淆矩阵:,,分类报告:,AUC_ROC 曲线:,,观察得到:,① 可以删除不相关且对数据没有影响的列,例如 “source” 列。,,② 从测试数据集中删除目标变量。,③ 使用StandardScaler对 x 的值进行数据标准化,得到呈正态分布的数据集。,④ 为潜在客户预测创建DataFrame数据框。,⑤ 将”ID”和预测保存到所有模型的 csv 文件中。,⑥ LGBM 模型输出。,因此,LGBM 被选为最终模型,因为该模型在训练集和测试集上均具有最高及最一致的 AUC 分数。,这里使用joblib库保存模型。,数据包含分类数据和数值数据。将类别转换为数值数据以进行EDA分析。,还进行了数据可视化分析,并得到到以下情况:,随机森林分类器,XGBoost分类器,分层交叉验证的LGBM分类器
© 版权声明
文章版权归作者所有,未经允许请勿转载。