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

本文基于统计学习方法(李航)的教材例子,利用Python的sklearn库构建并可视化决策树。文章详细介绍了如何处理数据、应用决策树模型,并通过graphviz进行图形展示。在过程中,还解决了中文乱码问题,提供了完整的代码示例。
部署运行你感兴趣的模型镜像

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

  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
生成图片
'''

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值