一 案例分析

  • 银行进行贷款按照利率获取利润,但存在贷款不归还现象,为保证银行获得最大的贷款利润,需要进行正确预测某人是否能够进行还款
  • 该项目可以作为二分类问题,让TP即某人可以还款并且预测成功的概率,同时让FP即某人不会还款并且预测错误导致放款的概率越低越好,即Recall率越高越好

数据集及代码放在https://github.com/RenDong3/Python_Note

二 特征工程

  • 在进行模型训练拟合之前需要对数据集特征属性进行调研,了解其每一个特征所表示的含义
  • 首先进行数据清洗,去除大量无关特征
  • 然后对特征进行处理,如将字符型转为数值型,缺失值填充等操作

2.1基本特征属性

  • 读取shape、columns、head()、tial()等数据基本特征
  • 索引读取数据
    • loc:通过行标签索引数据
    • iloc:通过行号索引行数据
    • ix:通过行标签或行号索引数据(基于loc和iloc的混合)
      Python项目实战------贷款利润最大化_缺失值

2.2 数据清洗

去除无效特征
  • 去除明显无关特征
    • 如本案例中 ‘id’‘member_id’ 等特征可以作为明显无关特征
      Python项目实战------贷款利润最大化_拟合_02
  • 去除所有数据同属性的特征
    • 如本案例中 ‘initial_list_status’ 除缺失值外其他所有数据都只含有__‘f’__ 这一个字符属性
      Python项目实战------贷款利润最大化_缺失值_03
    • pandas会将缺失值也作为一个属性,所以判别之前需要dropna()先去掉缺失值
      Python项目实战------贷款利润最大化_类型转换_04

2.3 特征处理

2.3.1 缺失值处理
  • 使用sum()对数据每个特征属性缺失值总数进行统计
    Python项目实战------贷款利润最大化_类型转换_05
  • 缺失值数量较少的特征可以进行缺失值填充或者丢弃少量缺失值
  • 缺失值较多的特征可以直接丢弃
    Python项目实战------贷款利润最大化_缺失值_06
2.3.2 特征类型转换
  • 使用dtypes对数据字符型特征进行筛选(pandas中字符类型表示为object)
    Python项目实战------贷款利润最大化_类型转换_07
  • 在进行类型转换之前可以统计下字符型特征的具体属性,方便下一步的转换
    Python项目实战------贷款利润最大化_类型转换_08
  • 类型转换
    • 自主设置字典进行replace
      • 如可以对数据中**‘emp_length’** 特征属性设置为0-10的数值进行对应replace原始字符属性Python项目实战------贷款利润最大化_缺失值_09
    • one-hot编码get_dummies()
      • 通过one-hot编码可以通过prefix设置新的特征属性
      • 不要忘记drop原始数据特征
        Python项目实战------贷款利润最大化_拟合_10
    • rstrip去除字符串末尾指定字符如’%'
      • 对于一些特殊特征属性如银行贷款利率,其数据带有‘%’等特殊字符,可以使用rstrip去除
        Python项目实战------贷款利润最大化_缺失值_11
  • 进行特征工程后可以进行info查看处理后数据的基本信息
    Python项目实战------贷款利润最大化_数据_12

三 模型拟合

  • 具体模型训练相关的评估指标在前一篇博客已经详细讲述过,请移步python项目实战—异常检测
  • 推荐首先使用逻辑回归算法进行二分类,其次选用随机森林等算法
    Python项目实战------贷款利润最大化_缺失值_13
    Python项目实战------贷款利润最大化_python_14
  • 上述结果显示,单纯使用准确率precision作为评价指标,逻辑回归有很高的准确度
  • 准确率很高并不能说明模型泛化性很好,因为案例仍可归类为异常检测类型问题,正负样本存在严重的不均衡问题,即全部预测为正样本也可以取得很高的准确率
  • 可以选择召回率Recall或者map曲线进行模型评估

数据不平衡问题解决方案

  • 正则化惩罚
    • 引入正则化项,调节正负样本权重参数class_weight
    • 如原始正负样本比例为1:6,则可以将权重设置为1:6,从未抵消影响
      Python项目实战------贷款利润最大化_数据_15
      Python项目实战------贷款利润最大化_python_16
  • 模型调整
    • 选择其他模型进行拟合数据
    • 集成融合不同模型拟合数据
  • 减小特征数量
    • 特征数量过多可能会导致模型过拟合,可以适当减少或者融合特征
  • 参数调优
    • 可以进行交叉验证、随机森林n_estimator等参数进行模型调优处理

四 总结

Python项目实战------贷款利润最大化_缺失值_17