2019-12-29

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019-12-29相关的知识,希望对你有一定的参考价值。

参考技术A 1、概念

决策树呈树形结构,是一种基本的回归和分类方法。

决策树模型的优点在于可读性强、分类速度快。

2、程序实现

importos

importpydotplus

importnumpyasnp

importpandasaspd

importsklearn.treeastree

importmatplotlib.pyplotasplt

fromIPython.displayimportImage

importsklearn.metricsasmetrics

fromsklearn.treeimportDecisionTreeClassifier

fromsklearn.model_selectionimporttrain_test_split, ParameterGrid, GridSearchCV

# 消除pandas输出省略号情况

pd.set_option('display.max_columns',None)

# 设置显示宽度为1000,这样就不会在IDE中换行了

pd.set_option('display.width',1000)

# 读取数据,skipinitialspace:忽略分隔符后的空白

accepts = pd.read_csv('accepts.csv', skipinitialspace=True)

# dropna:对缺失的数据进行删除

accepts = accepts.dropna(axis=0, how='any')

# 因变量,是否违约

target = accepts['bad_ind']

# 自变量

data = accepts.ix[:,'bankruptcy_ind':'used_ind']

# 业务处理,loan_amt:贷款金额,tot_income:月均收入

data['lti_temp'] = data['loan_amt'] / data['tot_income']

data['lti_temp'] = data['lti_temp'].map(lambdax:10ifx >=10elsex)

# 删除贷款金额列

deldata['loan_amt']

# 替换曾经破产标识列

data['bankruptcy_ind'] = data['bankruptcy_ind'].replace('N':0,'Y':1)

# 使用scikit-learn将数据集划分为训练集和测试集

train_data, test_data, train_target, test_target = train_test_split(data, target, test_size=0.2, train_size=0.8, random_state=1234)

# 初始化一个决策树模型

clf = DecisionTreeClassifier(criterion='gini', max_depth=3, class_weight=None, random_state=1234)

# 输出决策树模型信息

print(clf.fit(train_data, train_target))

# 输出决策树模型的决策类评估指标

print(metrics.classification_report(test_target, clf.predict(test_data)))

# 对不同的因变量进行权重设置

clf.set_params(**'class_weight': 0:1,1:3)

clf.fit(train_data, train_target)

# 输出决策树模型的决策类评估指标

print(metrics.classification_report(test_target, clf.predict(test_data)))

# 输出决策树模型的变量重要性排序

print(list(zip(data.columns, clf.feature_importances_)))

# 设置graphviz路径

os.environ["PATH"] += os.pathsep +'C:/Program Files (x86)/Graphviz2.38/bin/'

# 决策树的可视化

dot_data = tree.export_graphviz(clf, out_file=None, feature_names=data.columns, class_names=['0','1'], filled=True)

graph = pydotplus.graph_from_dot_data(dot_data)

Image(graph.create_png())

# 将决策树模型输出为图片

graph.write_png(r'pang.png')

# 将决策树模型输出为PDF

graph.write_pdf('tree.pdf')

从图1可以看见决策树根节点以fico_score <= 683.5为分割标准。

https://mp.weixin.qq.com/s?__biz=MzU4OTYzNjE2OQ==&mid=2247485104&idx=1&sn=57bd5aba5efdba901a90b853ad7f5ce7&chksm=fdcb3196cabcb88074e69bcaf0b0aaedea8c64a2f02ec9d396511ecc3717700f0e6e21eca6d7&mpshare=1&scene=23&srcid=1229sDzYeCbtGvujmgp6sbYT&sharer_sharetime=1577625469143&sharer_shareid=b9878e2d4bfd9120a9cd4d516418c18e#rd

以上是关于2019-12-29的主要内容,如果未能解决你的问题,请参考以下文章

2019.12.29纪录

每日思考(2019/12/29)

2019-12-29面对悔恨,哪敢说没时间

2019.12.29日志

Java——日期格式化YYYYMMdd与yyyyMMdd的区别

2020年1月