Python分析建模,日常问题整理(七)
2018.09.03~2018.09.09
- 1 拒绝推断
一般情况下,风控模型中的只有通过放款的客群才有好坏标记(是否逾期),而对于未放款的部分客群是没有进入模型的。
随着时间的推移,模型的优化迭代,进入模型的是越来越好的客群。
而风控模型真实面对的客群却包括了“评分较差”的用户,模型在“评分较差”用户中无法得到验证,导致训练的模型越来越偏离实际情况,甚至通过了大量应该被拒绝的坏用户,致使大量坏账出现,直接带来巨大经济损失。因此,在只有最优质的放款用户好坏标签的情况下,如何保证建模对所有放款用户和拒绝用户都有良好的排序能力,需要用到拒绝推断的思想。
- 2 jupyter隐藏代码
导出文件时输出但可以隐藏代码,点击按钮隐藏
from IPython.display import HTML
HTML('''<script>
code_show=true;
function code_toggle() {
if (code_show){
$('div.input').hide();
} else {
$('div.input').show();
}
code_show = !code_show
}
$( document ).ready(code_toggle);
</script>
<form action="javascript:code_toggle()"><input type="submit" value="点击隐藏或者显示代码"></form>''')
导出文件时可不输出也不隐藏代码,好好用呀
import IPython.core.display as di;
di.display_html('<script>jQuery(function() {if (jQuery("body.notebook_app").length == 0) \
{ jQuery(".input_area").toggle(); jQuery(".prompt").toggle();}});</script>', raw=True)
- 3 datafame表格格式
结合pyecharts和markdown,输出好看的分析报告。
这种应用类似于excel中的条件格式-数据条-色阶等功能。
def color_negative_red(val):
"""
对满足条件的数据标记为红色
"""
color = 'red' if val < 0.3 else 'black'
return 'color: %s' % color
dat_all.head().ix[:,2:].style.applymap(color_negative_red)
def highlight_max(s):
'''
highlight the maximum in a Series yellow.
选取一行/列最大值填充为黄色
'''
return ['background-color: yellow' if v == s.max() else '' for v in s]
df.style.apply(highlight_max,axis=1)
cm = sns.light_palette("green", as_cmap=True)
df.style.bar(subset=['a','b','c','d'], color='#5fba7d')
对某些列按大小设定绿色数据条
df.style.bar(subset=['a','b','c','d'], color='#5fba7d').applymap(color_negative_red)
对某些列先按大小设定绿色数据条,再按条件设定数字颜色
'''
先对满足条件的数据标记为红色,再对每行最大的数值填充为黄色
'''
df.style.applymap(color_negative_red).apply(highlight_max,axis=1)
def highlight_max(data, color='yellow'):
'''
highlight the maximum in a Series or DataFrame
对表中最大值填充为橘黄色
'''
attr = 'background-color: {}'.format(color)
if data.ndim == 1: # Series from .apply(axis=0) or axis=1
is_max = data == data.max()
return [attr if v else '' for v in is_max]
else: # from .apply(axis=None)
is_max = data == data.max().max()
return pd.DataFrame(np.where(is_max, attr, ''),
index=data.index, columns=data.columns)
df.style.apply(highlight_max, color='darkorange', axis=None)
来自于↓
df.style官方文档
- 4 将dataframe某一列作为索引
df.set_index(["Column"], inplace=True)