Package: pdtr
自动决策树规则挖掘工具包在笔者金融风控的日常工作中，很多时候需要根据数据集内的诸多特征（有很多其他称呼，比如因子、变量、自变量、解释变量等）来挖掘一些有用的规则和组合策略，在保证通过率的基础上尽可能多的拒绝坏客户。面对成千上万的特征，如何从数据集中找到有效的规则和组合策略，一直以来都是金融风控搬砖工的日常工作。pdtr旨在帮助读者快速从高维数据中提取出有效的规则和组合策略。仓库地址：https://github.com/itlubber/pdtr博文地址：https://itlubber.art/archives/auto-strategy-mining微信公共号推文：https://mp.weixin.qq.com/s/8s785MfmVznNgQyy38YnWwpipy包：https://pypi.org/project/pdtr/交流微信微信公众号itlubberitlubber_art背景简介金融场景风险大致可以概括为三种：系统性风险、欺诈风险（无还款意愿）、信用风险（无还款能力），而作为一名风控搬砖工，日常工作中有大量的数据挖掘工作，如何从高维数据集中挖掘出行之有效的规则、策略及模型来防范欺诈风险和信用风险每个搬砖工的基操。本仓库由笔者基于网上开源的一系列相关知识，结合实际工作中遇到的实际需求，整理得到。旨在为诸位仁兄提供一个便捷、高效、赏心悦目的决策树组合策略挖掘报告，及一系列能够实际运用到风险控制上的策略。项目结构pdtr
.|README.md# 说明文档|setup.py# 打包发布文件|LICENSE# 开源协议|requirements.txt# 项目依赖包+---examples# 演示样例||combine_rules_cache# 缓存文件||combine_rules_cache.svg# 缓存文件||pdtr_samplts.ipynb# 演示样例程序|\---model_report# 模型报告输出文件夹||决策树组合策略挖掘.xlsx# 策略挖掘报告|+---auto_mining_rules# 组合策略可视化存储文件夹||combiner_rules_0.png# 决策树可视化图片||......|\---bin_plots# 简单策略可视化存储文件夹|bin_vars_A.png# 变量分箱可视化图片|......\---pdtr# PDTR 源码包template.xlsx# excel 模版文件excel_writer.py# excel写入公共方法matplot_chinese.ttf# matplotlib 中文字体transforme.py# 策略挖掘方法环境准备创建虚拟环境（可选）通过conda创建虚拟环境>>condacreate-nscorepython==3.8.13

Collectingpackagemetadata(current_repodata.json):doneSolvingenvironment:failedwithrepodatafromcurrent_repodata.json,willretrywithnextrepodatasource.
Collectingpackagemetadata(repodata.json):doneSolvingenvironment:done==>WARNING:Anewerversionofcondaexists.<==currentversion:4.10.3latestversion:23.3.1

Pleaseupdatecondabyrunning$condaupdate-nbase-cdefaultsconda## Package Plan ##environmentlocation:/Users/lubberit/anaconda3/envs/scoreadded/updatedspecs:-python==3.8.13


Thefollowingpackageswillbedownloaded:package|build---------------------------|-----------------ca-certificates-2023.01.10|hecd8cb5_0121KBncurses-6.4|hcec6c5f_01018KBopenssl-1.1.1t|hca72f7f_03.3MBpip-23.0.1|py38hecd8cb5_02.5MBpython-3.8.13|hdfd78df_110.8MBsetuptools-66.0.0|py38hecd8cb5_01.2MBsqlite-3.41.2|h6c40b1e_01.2MBwheel-0.38.4|py38hecd8cb5_065KBxz-5.4.2|h6c40b1e_0372KB------------------------------------------------------------Total:20.5MB

ThefollowingNEWpackageswillbeINSTALLED:ca-certificatespkgs/main/osx-64::ca-certificates-2023.01.10-hecd8cb5_0libcxxpkgs/main/osx-64::libcxx-14.0.6-h9765a3e_0libffipkgs/main/osx-64::libffi-3.3-hb1e8313_2ncursespkgs/main/osx-64::ncurses-6.4-hcec6c5f_0opensslpkgs/main/osx-64::openssl-1.1.1t-hca72f7f_0pippkgs/main/osx-64::pip-23.0.1-py38hecd8cb5_0pythonpkgs/main/osx-64::python-3.8.13-hdfd78df_1readlinepkgs/main/osx-64::readline-8.2-hca72f7f_0setuptoolspkgs/main/osx-64::setuptools-66.0.0-py38hecd8cb5_0sqlitepkgs/main/osx-64::sqlite-3.41.2-h6c40b1e_0tkpkgs/main/osx-64::tk-8.6.12-h5d9f67b_0wheelpkgs/main/osx-64::wheel-0.38.4-py38hecd8cb5_0xzpkgs/main/osx-64::xz-5.4.2-h6c40b1e_0zlibpkgs/main/osx-64::zlib-1.2.13-h4dc903c_0


Proceed([y]/n)?y


DownloadingandExtractingPackages
sqlite-3.41.2|1.2MB|################################################################################################### | 100%wheel-0.38.4|65KB|################################################################################################### | 100%openssl-1.1.1t|3.3MB|################################################################################################### | 100%python-3.8.13|10.8MB|################################################################################################### | 100%setuptools-66.0.0|1.2MB|################################################################################################### | 100%ncurses-6.4|1018KB|################################################################################################### | 100%xz-5.4.2|372KB|################################################################################################### | 100%ca-certificates-2023|121KB|################################################################################################### | 100%pip-23.0.1|2.5MB|################################################################################################### | 100%Preparingtransaction:doneVerifyingtransaction:doneExecutingtransaction:done## To activate this environment, use##     $ conda activate score## To deactivate an active environment, use##     $ conda deactivate通过pyenv创建虚拟环境# 安装环境>>pyenvinstall-v3.8.13# 启动环境>>pyenvlocal3.8.13# 卸载环境>>pyenvuninstall3.8.13安装项目依赖>>pipinstall-rrequirements.txt-ihttp://mirrors.aliyun.com/pypi/simple/--trusted-hostmirrors.aliyun.com

Lookinginindexes:http://mirrors.aliyun.com/pypi/simple/
......
Installingcollectedpackages:webencodings,six,pytz,colour,zipp,tomli,tinycss2,threadpoolctl,python-dateutil,pyparsing,pycparser,pluggy,pillow,packaging,numpy,kiwisolver,joblib,iniconfig,graphviz,fonttools,exceptiongroup,et-xmlfile,defusedxml,cycler,scipy,pytest,patsy,pandas,openpyxl,importlib-resources,cssselect2,contourpy,cffi,statsmodels,scikit-learn,matplotlib,cairocffi,dtreeviz,category-encoders,CairoSVG
SuccessfullyinstalledCairoSVG-2.7.0cairocffi-1.5.1category-encoders-2.6.0cffi-1.15.1colour-0.1.5contourpy-1.0.7cssselect2-0.7.0cycler-0.11.0defusedxml-0.7.1dtreeviz-2.2.1et-xmlfile-1.1.0exceptiongroup-1.1.1fonttools-4.39.4graphviz-0.20.1importlib-resources-5.12.0iniconfig-2.0.0joblib-1.2.0kiwisolver-1.4.4matplotlib-3.7.1numpy-1.22.2openpyxl-3.0.7packaging-23.1pandas-1.5.3patsy-0.5.3pillow-9.5.0pluggy-1.0.0pycparser-2.21pyparsing-3.0.9pytest-7.3.1python-dateutil-2.8.2pytz-2023.3scikit-learn-1.2.2scipy-1.10.1six-1.11.0statsmodels-0.14.0threadpoolctl-3.1.0tinycss2-1.2.1tomli-2.0.1webencodings-0.5.1zipp-3.15.0PDTR安装pipinstallpdtr版本介绍0.1.0仅包含决策树策略挖掘相关工具0.1.1除版本0.1.0中的决策树挖掘相关工具以外，新增了基于toad和optbinning的单变量策略挖掘相关方法0.1.2在0.1.1的基础上增加了部分方法的文档注释运行样例导入相关依赖importosimportnumpyasnpimportpandasaspdfromsklearn.model_selectionimporttrain_test_splittry:frompdtrimportParseDecisionTreeRulesexceptModuleNotFoundError:importsyssys.path.append("../")frompdtrimportParseDecisionTreeRulesnp.random.seed(1)数据集加载feature_map={}n_samples=10000ab=np.array(list('ABCDEFG'))data=pd.DataFrame({'A':np.random.randint(10,size=n_samples),'B':ab[np.random.choice(7,n_samples)],'C':ab[np.random.choice(2,n_samples)],'D':np.random.random(size=n_samples),'target':np.random.randint(2,size=n_samples)})数据集拆分train,test=train_test_split(data,test_size=0.3,shuffle=data["target"])决策树自动规则挖掘pdtr_instance=ParseDecisionTreeRules(target="target",max_iter=8,output="model_report/决策树组合策略挖掘.xlsx")pdtr_instance.fit(train,lift=0.,max_depth=2,max_samples=1.,verbose=False,max_features="auto")规则验证all_rules=pdtr_instance.insert_all_rules(test=test)导出策略挖掘报告pdtr_instance.save()挖掘报告examples/决策树组合策略挖掘.xlsx参考https://github.com/itlubber/LogisticRegressionPipelinehttps://github.com/itlubber/itlubber-excel-writer