一、策略规则上线前测试Python实现

1.导入Pyhon模块/获取数据集

import pandas as pd

import numpy as np

print("获取数据集")

file_name_data = 'd:/Users/jiangxiangtao/Desktop/叉车测试数据文件/叉车测试数据值.xlsx'

df_data = pd.read_excel(file_name_data)

2.规则判断

#提取客户ID

df_data_id =list(df_data['客户ID' ].drop_duplicates ())#删除重复值

df1 = []

df2 = []

print ('开始规则判断' )

for i in df_data_id:

data_1 = df_data.loc[ df_data['客户ID' ] == i ]#提取客户ID

    #提取单条客户数据进行规则判定,通过输出0且通过,命中输出1且输出命中规则

    if np.array(data_1['调整后客户级别'])=="白名单D类客户" and np.array(data_1['客户类别']) !="个人/个体工商户" and np.array(data_1['有无保证人']) =="无":

df1.append (1)

df2.append ('白名单D类客户且非个人/个体工商户无保证人' )

elif np.array(data_1['所属名单'])=="灰名单" and np.array(data_1['客户类别']) !="个人/个体工商户" and np.array(data_1['有无保证人']) =="无":

df1.append (1)

df2.append ('灰名单客户且非个人/个体工商户无保证人' )

elif np.array ( data_1['调整后客户级别'])=="白名单D类客户" and np.array ( data_1['租期(月)' ] ) <1 and np.array ( data_1['应付预付款' ] ) < np.array ( data_1['租金总额' ] ):

df1.append (1 )

df2.append ("白名单D类客户且租期<1个月且预收款<合同金额" )

elif np.array ( data_1['调整后客户级别'])=="白名单D类客户" and np.array ( data_1['租期(月)' ] ) >=1 and np.array ( data_1['应付预付款' ] ) < np.array ( data_1['预计月租金' ] ):

df1.append (1 )

df2.append ("白名单D类客户且建筑业企业且租期≥1个月且预收款<该订单月租金" )

elif np.array ( data_1['所属名单' ] ) =="灰名单" and np.array ( data_1['租期(月)' ] ) <1 and np.array (

data_1['应付预付款' ] ) < np.array ( data_1['租金总额' ] ):

df1.append (1 )

df2.append ("灰名单客户且租期<1个月且预收款<合同金额" )

elif np.array ( data_1['所属名单' ] ) =="灰名单" and np.array ( data_1['租期(月)' ] ) >=1 and np.array (

data_1['应付预付款' ] ) < np.array ( data_1['预计月租金' ] ):

df1.append (1 )

df2.append ("灰名单客户且建筑业企业且租期≥1个月且预收款<该订单月租金" )

elif np.array ( data_1['调整后客户级别'])=="白名单D类客户" and np.array ( data_1['所属行业' ] ) =="建筑业" and np.array ( data_1['产品分类' ] )=="搬运车" or np.array ( data_1['产品分类' ] )=="堆高车" and np.array ( data_1['单台押金' ] ) <1000 :

df1.append (1 )

df2.append ("白名单D类且建筑业企业搬运车/堆高车押金<1000元/台" )

elif np.array ( data_1['调整后客户级别'])=="白名单D类客户" and np.array ( data_1['所属行业' ] ) =="建筑业" and np.array ( data_1['产品分类' ] )=="叉车"  and np.array ( data_1['单台押金' ] ) <2000 :

df1.append (1 )

df2.append ("白名单D类且建筑业企业平衡重/前移式叉车押金<2000元/台" )

elif np.array ( data_1['客户类别'])=="个人/个体工商户"  and np.array ( data_1['产品分类' ] )=="搬运车" or np.array ( data_1['产品分类' ] )=="堆高车" and np.array ( data_1['单台押金' ] ) <1000 :

df1.append (1 )

df2.append ("个体工商户搬运车/堆高车押金<1000元/台" )

elif np.array ( data_1['客户类别'])=="个人/个体工商户"  and np.array ( data_1['产品分类' ] )=="叉车"  and np.array ( data_1['单台押金' ] ) <2000 :

df1.append (1 )

df2.append ("个体工商户平衡重/前移式叉车押金<2000元/台" )

elif np.array ( data_1['调整后客户级别' ] ) =="白名单B类客户" and np.array ( data_1['事业部最长逾期' ] ) >90 :

df1.append (1 )

df2.append ("白名单B类客户租金事业部最长逾期天数>90天" )

elif np.array ( data_1['调整后客户级别' ] ) =="白名单B类客户" and np.array ( data_1['营业店最长逾期' ] ) >60 :

df1.append (1 )

df2.append ("白名单B类客户租金营业店最长逾期天数>60天" )

elif np.array ( data_1['调整后客户级别' ] ) =="白名单C类客户" and np.array ( data_1['事业部最长逾期' ] ) >60:

df1.append (1 )

df2.append ("白名单C类客户租金事业部最长逾期天数>60天" )

elif np.array ( data_1['调整后客户级别' ] ) =="白名单C类客户" and np.array ( data_1['营业店最长逾期' ] ) >30:

df1.append (1 )

df2.append ("白名单C类客户租金营业店最长逾期天数>30天" )

elif np.array ( data_1['调整后客户级别' ] ) =="白名单D类客户" and np.array ( data_1['事业部最长逾期' ] ) >30:

df1.append (1 )

df2.append ("白名单D类客户公司客户租金事业部最长逾期天数>30天" )

elif np.array ( data_1['所属名单' ] ) =="灰名单" and np.array ( data_1['事业部最长逾期' ] ) >30:

df1.append (1 )

df2.append ("灰名单客户租金事业部最长逾期天数>30天" )

elif np.array ( data_1['所属名单' ] ) =="灰名单" :

df1.append (1 )

df2.append ("灰名单客户" )

else:

df1.append(0)

df2.append("通过")

3.合并判断结果至结果表中

df1 = pd.DataFrame(df1)

df2 = pd.DataFrame(df2)

df1.columns=(["结果"])

df2.columns=(["命中规则"])

df_data_1 = df_data.join(df1)

df_data_2 = df_data_1.join(df2)

4.输出通过率和单规则命中情况

df3 = pd.pivot_table(df_data_2, values='客户ID', index='结果', columns=None, aggfunc='count', fill_value=None, margins=True, dropna=True, margins_name='All')#数据透视表

df4 = pd.pivot_table(df_data_2, values='客户ID', index='命中规则', columns=None, aggfunc='count', fill_value=None, margins=True, dropna=True, margins_name='All')#数据透视表

df5 = np.round(df4.apply(lambda x: x /433 *100),4)#统计单规则命中情况

print(df5.sort_values('客户ID'))

df10 = (1 - df_data_2['结果'].sum() /433) *100 #统计通过率

df11 = np.round(df10,2)#统计通过率

print("通过率为:",df11,"%")#统计通过率

5.得到明细结果数据


规则判断结果记录表


结果数据(通过率及规则拒绝率)



得到测试通过率,可检查通过率是否满足业务目标,若通过率低于目标值则可根据规则拒绝情况,调整规则后得到目标通过率。

上述规则均以内部合作记录建立,因外部征信数据如黑名单、多头、涉诉情况冷启动阶段无数据验证,可借用已上线的规则进行迁移学习,即现有的通过率减去各征信数据的拒绝率,从而得到接近真实情况的通过率情况。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容