python决策树

决策树的概念

决策树是大数据技术进行分类和预测的一种,决策树学习是一种基于实例归纳学习算法,它主要从一组无次序、无规则的实例中推理出以决策树所代表分类规则。它采用从上向下的递归方式,在决策树的内部节点进行属性的比较,并根据不同属性值判断从该节点向下的分支,在决策树的叶节点得到结论。

为了理解决策树的概念,下面举个例子说明:

                                                                            表1.银行贷款者历史数据



银行依据上表的银行贷款者历史数据构建如下图的决策树,假设有一笔新的贷款客户信息:没有房子、单身、年收入9万元,银行根据决策树首先对这位客户进行了解“是否有房”,没有房子就从上往下的右边“已婚”走,然后继续了解是否结婚。还是单身没有结婚就从上往下的左边“年收入”走。最后了解客户的年收入是否大于8万元,9万元是大于8万元的,最后在叶节点结论看到“不违约”。银行就可以预测客户相对会有违约情况发生可能性较低,所以可以决定贷款给客户。

图1.银行贷款决策树


我们现有一笔2017年某银行的客户信息和违约情况经数据处理后,如下图所示,共计700条数据。

表2.2017年某银行历史数据


通过Anaconda3软件对上面数据进行分析,运行下面的代码

import pandas as pd
from sklearn.linear_model import LogisticRegression as LR
from sklearn.linear_model import RandomizedLogisticRegression as RLR
from sklearn.tree import DecisionTreeClassifier as DTC
from sklearn.tree import export_graphviz

from sklearn.externals.six import StringIO
import pydotplus
from IPython.display import Image

if __name__ == "__main__":
    # 取出数据
    data = pd.read_excel("C:/2018/2017myjb.xlsx")
    x = data.iloc[:, :8].as_matrix()
    y = data.iloc[:, 8].as_matrix()

    # 筛选特征值
    rlr = RLR()
    rlr.fit(x, y)
    rlr_support = rlr.get_support()
    support_col = data.drop('违约', axis=1).columns[rlr_support]
    x = data[support_col].as_matrix()

    # 建立决策树模型
    clf = DTC()
    clf = clf.fit(x, y)
    dot_data = StringIO()
    export_graphviz(clf)
    dot_data = StringIO()
    export_graphviz(
        clf,
        out_file=dot_data,
        class_names=support_col,
        filled=True,
        rounded=True,
        special_characters=True)
    graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
    # 写入pdf
    graph.write_pdf('c:/2018/bankload_tree.pdf')

运行代码过程中,可能会出现这样的问题,是因为我们电脑没有安装GraphViz软件,无法将输出结果转换成pdf。


                                                     图2

1.我们先去官网下载软件安装在电脑上
下载地址:https://graphviz.gitlab.io/_pages/Download/Download_windows.html

                                                   图3

2.将安装软件的目录记下,如C:\Program Files (x86)\Graphviz2.38\


                                            图4

3.将GraphViz的安装目录添加到环境变量path里



                                                                       图5
注:为了不把之前path环境变量覆盖,我们在原来基础上加英文下 ;  ,    如  C:\Program Files (x86)\Graphviz2.38\
                                     图6

我们将获得下图的pdf,获得pdf无法显示其中的中文 ,还需要配置一些其他东西,比较麻烦 。我们可以简单把其中文换英文进行分析。

图7.python决策树

因为处理2017年某银行历史数据量较大,我们可以看到构建的决策树从上向下的分支特别多。决策树模型和逻辑回归模型一样,模型从数据中获取的有效特征:工龄、地址、负债利、信用卡负债,并根据这根据这四个特征值构建上图的决策树。当有新的客户信息时,首先根据客户的“工龄”找到某银行决策树第一个节点“工龄”,然后进行客户“工龄”值与该节点“工龄”值比较之后确定往向下哪个分支走,重复操作最后在某银行决策树分支的叶末节点找到客户是否会有违约情况发生的结论。



  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Python提供了多种库来实现决策树,其中最常用的是scikit-learn库。使用scikit-learn库中的DecisionTreeClassifier类可以实现分类决策树,使用DecisionTreeRegressor类可以实现回归决策树。 以下是一个简单的示例代码,演示了如何使用scikit-learn库中的DecisionTreeRegressor类来构建回归决策树模型并进行预测: ```python from sklearn.tree import DecisionTreeRegressor X = [[1,2],[3,4],[5,6],[7,8],[9,10]] y = [1,2,3,4,5] model = DecisionTreeRegressor(max_depth=2, random_state=0) model.fit(X, y) prediction = model.predict([[9,9]]) print(prediction) # 输出 [4.5] ``` 在这个示例中,我们首先导入了DecisionTreeRegressor类,然后定义了训练数据X和对应的目标值y。接下来,我们创建了一个DecisionTreeRegressor对象,并通过fit()方法对模型进行训练。最后,我们使用predict()方法对新的数据[[9,9]]进行预测,并打印出预测结果[4.5]。 决策树的概念并不复杂,它主要通过连续的逻辑判断得出最后的结论。在每个节点上,决策树会根据某个属性的取值将数据集划分成不同的子集。划分的方法可以是基于Gini系数的CART决策树算法,Gini系数可以测量数据集的纯度。通过不断划分和递归建立决策树的过程,最终得到一棵具有判断能力的树形结构。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [决策树python)](https://blog.csdn.net/herry57/article/details/125431770)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [决策树模型及案例(Python)](https://blog.csdn.net/qq_42433311/article/details/124171221)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值