• 决策树(统计学习方法(李航))的贷款的例子的实现


    以统计学习方法(李航)这本书的例子为基础
    需要注意的地方:

    1. 我用的是pycharm
    2. python版本是3.7
    3. graphviz是一个软件,在pycharm里面下了还得去官网下
      下完之后得加入环境变量可能还需要重启电脑
    4. 缺啥库就安啥库
    5. 那个数据是我自己设置的,手敲的。

    贷款申请样本数据表

    ID 年龄 有工作 有自己的房子 信贷情况 类别
    1 青年 一般
    2 青年
    3 青年
    4 青年 一般
    5 青年 一般
    6 中年 一般
    7 中年
    8 中年
    9 中年 非常好
    10 中年 非常好
    11 老年 非常好
    12 老年
    13 老年
    14 老年 非常好
    15 老年 一般

    数据集

    特征量 表示
    年龄 青年:1 中年:2 老年:3
    有工作 是:1 否:0
    有自己的房子 是1:否:0
    信贷情况 一般:1 好:2 非常好:3
    类别 是:1 否:0

    dataset=[
    [1,0,0,1,0],
    [1,0,0,2,0],
    [1,1,0,2,1],
    [1,1,1,1,1],
    [1,0,0,1,0],
    [2,0,0,2,0],
    [2,0,0,2,0],
    [2,1,1,2,1],
    [2,0,1,3,1],
    [2,0,1,2,1],
    [3,0,1,3,1],
    [3,0,1,2,1],
    [3,1,0,3,1],
    [3,1,0,3,1],
    [3,0,0,1,0]
    ]

    X = [x[0:4] for x in dataset] #取出特征值
    print(X)
    Y = [y[-1] for y in dataset]#取Y值
    print(Y)
    

    用sklearn的求决策树的方法求出决策树,再利用graphviz进行可视化

    from sklearn.tree import DecisionTreeClassifier
    from sklearn.tree import export_graphviz
    dataset=[
        [1,0,0,1,0],
        [1,0,0,2,0],
        [1,1,0,2,1],
        [1,1,1,1,1],
        [1,0,0,1,0],
        [2,0,0,2,0],
        [2,0,0,2,0],
        [2,1,1,2,1],
        [2,0,1,3,1],
        [2,0,1,2,1],
        [3,0,1,3,1],
        [3,0,1,2,1],
        [3,1,0,3,1],
        [3,1,0,3,1],
        [3,0,0,1,0]
    ]
    feature =['年龄','没有工作','没有自己的房子','信贷情况']
    classname =['不借','借']
    
    X = [x[0:4] for x in dataset]
    print(X)
    Y = [y[-1] for y in dataset]
    print(Y)
    tree_clf = DecisionTreeClassifier(max_depth=4)
    tree_clf.fit(X, Y)
    

    上面是求决策树的方法但是不能可视化,然后在此基础上加上下面的代码

    export_graphviz(
                tree_clf,
                out_file=("loan.dot"),
                feature_names=feature,
                class_names=classname,
                rounded=True,
                filled=True,
    
            )
    

    运行代码会在本目录生成loan.dot文件
    再在pycharm里面的本地终端中进入当前目录执行以下命令

    dot -Tpng loan.dot -o loan.png
    

    就会生成png的图片。
    我的目录如下

    但是你会发现会出现中文乱码
    那么你继续加以下代码

    import re
    # 打开 dot_data.dot,修改 fontname="支持的中文字体"
    f = open("./loan.dot", "r+", encoding="utf-8")
    open('./Tree_utf8.dot', 'w', encoding="utf-8").write(re.sub(r'fontname=helvetica', 'fontname="Microsoft YaHei"', f.read()))
    f.close()
    

    然后看看效果图

    整个代码如下

    from sklearn.tree import DecisionTreeClassifier
    from sklearn.tree import export_graphviz
    dataset=[
        [1,0,0,1,0],
        [1,0,0,2,0],
        [1,1,0,2,1],
        [1,1,1,1,1],
        [1,0,0,1,0],
        [2,0,0,2,0],
        [2,0,0,2,0],
        [2,1,1,2,1],
        [2,0,1,3,1],
        [2,0,1,2,1],
        [3,0,1,3,1],
        [3,0,1,2,1],
        [3,1,0,3,1],
        [3,1,0,3,1],
        [3,0,0,1,0]
    ]
    feature =['年龄','没有工作','没有自己的房子','信贷情况']
    classname =['不借','借']
    
    X = [x[0:4] for x in dataset]
    print(X)
    Y = [y[-1] for y in dataset]
    print(Y)
    tree_clf = DecisionTreeClassifier(max_depth=4)
    tree_clf.fit(X, Y)
    
    export_graphviz(
                tree_clf,
                out_file=("loan.dot"),
                feature_names=feature,
                class_names=classname,
                rounded=True,
                filled=True,
    
            )
    
    import re
    # 打开 dot_data.dot,修改 fontname="支持的中文字体"
    f = open("./loan.dot", "r+", encoding="utf-8")
    open('./Tree_utf8.dot', 'w', encoding="utf-8").write(re.sub(r'fontname=helvetica', 'fontname="Microsoft YaHei"', f.read()))
    f.close()
    
    
    '''
    dot -Tpng loan.dot -o loan.png
    生成图片
    '''
    
  • 相关阅读:
    python 文件和路径操作函数小结
    python文件处理
    jquery操作select
    ubuntu 安装ODOO时的python的依赖
    XML-RPC 实现C++和C#交互
    C#接收xmlrpc接口返回哈希表格式
    XmlRpc with C#/Java【转】
    OpenERP 的XML-RPC的轻度体验+many2many,one2many,many2one创建方式
    在Ubuntu Server上源码安装OpenERP 8.0,并配置wsgi和nginx运行环境
    C# 文件与二进制互转数据库写入读出
  • 原文地址:https://www.cnblogs.com/realwuxiong/p/11962006.html
Copyright © 2020-2023  润新知