0 目标

使用预测市民是否属于高收入群体数据集,制作市民个人收入评分机制(评分卡)。
评分越高说明该市民属于高收入群体的可能性越大。

1 数据概览


字段不多,连续型变量有5个,离散变量有8个,Y值是二分类,1代表属于高收入群体,0代表不是高收入群体。

# 连续型变量
col_values = ["年龄", "工作天数", "投资收入", "投资损失", "教育时间"]
# 离散型变量
col_labels = ["职业类型", "省份", "教育", "家庭角色", "婚姻状况", "民族", "工作情况", "性别"]

然后加载数据:

import pandas as pd
import numpy as np
import copy
from time import time
from sklearn.linear_model import LogisticRegression
import math# 加载数据
df = pd.read_csv("Incoming_predict_train.csv")
col_item = dict()

2 检查缺失值

# 检查是否有缺失值
col_name_list = df.columns.values
nan_result = df.isnull().sum(axis=0)
result_dict = {k: v for k, v in zip(col_name_list, list(nan_result))}
items = []
for k, v in result_dict.items():item = dict()item["col"] = kitem["count"] = vitems.append(item)print(item)

缺失值情况:

{'col': '性别', 'count': 0}
{'col': 'Y', 'count': 0}
{'col': '民族', 'count': 0}
{'col': '教育', 'count': 0}
{'col': '省份', 'count': 0}
{'col': '职业类型', 'count': 0}
{'col': '婚姻状况', 'count': 0}
{'col': '投资损失', 'count': 0}
{'col': '投资收入', 'count': 0}
{'col': '工作情况', 'count': 0}
{'col': '工作天数', 'count': 0}
{'col': '教育时间', 'count': 0}
{'col': '家庭角色', 'count': 0}
{'col': '年龄', 'count': 0}

可以看到并没有缺失值,进行下一步。

3 异常值分析

这里把连续变量和离散变量的异常值分析分开

分析连续变量


观察发现,以上连续值分箱线图中并未出现负值,有偏离的比较远的值的变量为投资收入、投资损失、教育时间。
因为投资的波动性较大,所以投资收入和投资损失有超出边缘之外的偏离值是符合逻辑的。
教育时间变量中出现了少量小于等于4的值,检查发现教育时间和教育水平变量并不是很符合,根据后续分析结果将去掉其中一个变量。

分析离散变量



省份8的数据占90%以上,建立模型的时候不考虑此字段。

最高教育水平的数据不是很规整,幼儿园的数据太少,这里剔除,同时把数据一统一下。


合并已婚军属和已婚平民配偶为已婚。

这里民族D占85%以上,建立模型的时候不使用此字段。

无收入和从未工作群体不属于收入人群,也不属于高收入预测的目标群体,这里删除。

异常值分析代码

    # 区分连续型变量col_values = ["年龄", "工作天数", "投资收入", "投资损失", "教育时间"]col_labels = ["职业类型", "省份", "教育", "家庭角色", "婚姻状况", "民族", "工作情况", "性别"]# 异常值分析-连续变量df_abnormal = df[col_values]fig, axes = plt.subplots(1, 5)# boxes表示箱体,whisker表示触须线, medians表示中位数,caps表示最大与最小值界限color = dict(boxes='DarkGreen', whiskers='DarkOrange', medians='DarkBlue', caps='Red')# sym参数表示异常值标记的方式df_abnormal.plot(kind='box', ax=axes, subplots=True, title='连续变量异常值分析', color=color, sym='r+')for index, col in enumerate(col_values):axes[index].set_ylabel(col)fig.subplots_adjust(wspace=1, hspace=1)  # 调整子图之间的间距fig.show()# 异常值分析-离散变量for index, col in enumerate(col_labels):rate = df[col].value_counts()sns.barplot(x=(rate.index), y=(rate.values / sum(rate)), palette="muted")plt.title(col)plt.xticks(rotation=90)plt.show()

4 数据清洗

直接上代码:

    # 数据清洗# 教育edu_dict = {"高一": "高中", "高三": "高中", "高中生": "高中", "高二": "高中","小学3年级": "小学", "小学5、6年级": "小学","大学生": "本科","大学专科": "专科","初中一、二年级": "初中", "初三": "初中","大学未毕业": "本科肄业","准职业学位": "专科"}df["教育"] = df["教育"].replace(edu_dict)# 婚姻状况marry_dict = {"已婚平民配偶": "已婚", "已婚军属": "已婚"}df["婚姻状况"] = df["婚姻状况"].replace(marry_dict)# 工作情况df = df[~df['工作情况'].isin(["无收入", "从未工作"])]# 删除字段df = df.drop(["省份", "民族"], axis=1)# 区分连续型变量col_values = ["年龄", "工作天数", "投资收入", "投资损失", "教育时间"]col_labels = ["职业类型", "教育", "家庭角色", "婚姻状况", "工作情况", "性别"]# 数据比例total_bad = len(df.loc[(df["Y"] == 0), "Y"])total_good = len(df.loc[(df["Y"] == 1), "Y"])print("======================数据比例==========================")print("非高收入/高收入 = {}/{}".format(total_bad, total_good))

使用Python建立市民个人收入评分卡(一)相关推荐

  1. 使用Python建立市民个人收入评分卡(二)

    5 连续型变量自动分箱 在评分卡建模过程中,数据中的连续型变量需要进行分箱,用于计算woe值. 这里使用卡方分箱进行分箱 # 卡方分箱 def Chi_merge(X, y, columns, k=6 ...

  2. 「实战案例」基于Python语言开发的信用评分卡

    信用风险计量模型可以包括跟个人信用评级,企业信用评级和国家信用评级.人信用评级有一系列评级模型组成,常见是A卡(申请评分卡).B卡(行为模型).C卡(催收模型)和F卡(反欺诈模型). 今天我们展示的是 ...

  3. python风控工具_Toad | Pyhon评分卡工具轻松实现风控模型开发

    前言 介绍一个超级.超级.超级强大的评分卡模型开发库 .很多从业者都知道信贷风控界有一个库叫做Scorecardpy.作者是谢士晨博士.今天为读者介绍另一个同样用于开发评分卡的库,名为toad. ⭐️ ...

  4. (信贷风控十一)随机森林在催收评分卡还款率模型的应用(python代码实现)

    (十一)随机森林在催收评分卡还款率模型的应用(python代码实现) 催收评分卡和申请评分卡和行为评分卡不太一样,一般申请评分卡和行为评分卡使用一个模型就可以了,但是催收评分卡由三个模型构成:(不同的 ...

  5. 【项目经验总结】贷前评分卡建模全流程指南

    由于前几个月参与了一家股份制银行的信贷风控项目,其中我负责了贷前评分卡建模相关工作,最近刚完成模型交付,在此总结记录一下,从数据诊断到样本提取,再到模型构建的全流程工作内容. 本文主要侧重实地驻场建模 ...

  6. 评分卡模型建模详细步骤-评分卡建模实例之scorecardpy

    目录 0.引言 1.scorecardpy介绍 2.评分卡建模过程 2.1数据加载 2.1变量筛选 2.2数据划分 2.3变量分箱 2.3.1 自动分箱 2.3.2 手动调整分箱 2.4变量转化woe ...

  7. 评分卡SCORECARD 理论知识

    这九个字母分别是九个英文单词的首写字母,代表评分卡开发工作顺序,它们的含义分别是: S = Sampling数据选取与抽样 C = Cleansing数据检测.数据清洗.数据链接与合并 O = Opt ...

  8. 信用评分卡模型 —— 基于Lending Club数据

    1.前言 Lending Club是全球最大的撮合借款人和投资人的线上金融平台,它利用互联网模式建立了一种比传统银行系统更有效率的.能够在借款人和投资人之间自由配置资本的机制.本次分析的源数据基于Le ...

  9. 从0到1建立一张评分卡之数据预处理

    从 0 到 1 建立一张评分卡   之前看了很多评分卡建模方面的课程和文章,对评分卡的建立大致有一些了解.但是由于实际工作中没有接触过,也没有看到过比较舒服的代码,所以对评分卡这块一直有点不踏实.所幸 ...

最新文章

  1. 2015.11.11
  2. mysql查询过程从客户端发送查询请求_MySQL查询过程和高级查询
  3. python数据处理模块pandas_13. Python|模块总结:Pandas(数据处理)|【老W笔记】...
  4. leetcode--983.最低票价
  5. 题目1089:数字反转(简单数字转换)
  6. 六元均匀直线阵的各元间距为_小间距led显示屏的封装方式有哪些?本文带你了解!...
  7. linux 分区个数限制,Linux分区个数限制[转载]
  8. PERL 使用IO::Socket::INET模块实现socket编程
  9. Android Studio下导出jar包和aar包
  10. 【CodeForces】Round #436
  11. DevExpress.XtraTreeList.TreeList的DataSource属性使用注意事项.
  12. iOS 客户端对于运营商劫持的一点点对抗方式
  13. 《Java 8 实战》 学习笔记一(行为参数化)
  14. 财智V6.0(完美破解序列号特别版)
  15. 双显卡(Intel+Nvidia)笔记本配置cuda开发环境
  16. 微信小程序rich-text富文本图片自适应处理
  17. Fatal error: Uncaught ArgumentCountError: Too few arguments to function 解决方法
  18. php淘金农场源码_PHP欢乐农场源码 淘金农场源码 欢乐农场游戏源码
  19. 求不规则四边形的面积
  20. 万物云开启路演:拟募资8亿美元 淡马锡与高瓴是基石投资者

热门文章

  1. 百度地图POI兴趣点查询
  2. php中的项目在华为云上显示,php 显示
  3. 读书笔记——《拥有,其实是另一种失去》
  4. js 悬浮按钮,支持PC和移动端拖动
  5. 我与CSDN两年的恩怨情仇
  6. 基于MDKA5D31-EK_T70开发板的QT示例-demo05:计算器
  7. 爱菠萝V1-3600M更爱JASMINER-茉莉XAQ,成年人不做选择
  8. 让二次元妹子动起来,用一张图生成动态虚拟主播
  9. [德ALL]没村往事
  10. 视口,像素和屏幕宽度获取方法