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

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

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

原文地址:https://www.cnblogs.com/realwuxiong/p/11962006.html

时间: 2024-10-23 02:06:43

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

统计学习方法 李航---第12章 统计学习方法总结

第12章 统计学习方法总结 1 适用问题 分类问题是从实例的特征向量到类标记的预测问题:标注问题是从观测序列到标记序列(或状态序列)的预测问题.可以认为分类问题是标注问题的特殊情况. 分类问题中可能的预测结果是二类或多类:而标注问题中可能的预测结果是所有的标记序列,其数目是指数级的. 感知机.k近邻法.朴素贝叶斯法.决策树是简单的分类方法,具有模型直观.方法简单.实现容易等特点: 逻辑斯谛回归与最大熵模型.支持向量机.提升方法是更复杂但更有效的分类方法,往往分类准确率更高: 隐马尔可夫模型.条件

统计学习方法 李航---第1章 统计学习方法概论

第一章 统计学习方法概论 统计学习的主要特点是: (1)统计学习以计算机及网络为平台,是建立在计算机及网络之上的; (2)统计学习以数据为研究对象,是数据驱动的学科: (3)统计学习的目的是对数据进行预测与分析: (4)统计学习以方法为中心,统计学习方法构建模型并应用模型进行预测与分析; (5)统计学习是概率论.统计学.信息论.计算理论.最优化理论及计算机科学等多个领域的交叉学科,并且在发展中逐步形成独自的理论体系与方法论. 统计学习的对象是数据Cdata) 统计学习的目的是对数据进行预铡与分析

统计学习方法 李航---第8章 提升方法

第8章提升方法 提升(boosting)方法是一种常用的统计学习方法,应用广泛且有效.在分类问题中,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能. 基本思想:对于分类问题而言,给定一个训练样本集,求比较粗糙的分类规则(弱分类器)要比求精确的分类规则(强分类器)容易得多.提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器(又称为基本分类器),然后组合这些弱分类器,构成一个强分类器.大多数的提升方法都是改变训练数据的概率分布(训练数据的权值分布),针对

统计学习方法-李航 第一章

第一章 统计学习方法概论 学习:如果一个系统能够通过执行某个过程改进它的性能,这就是学习 监督学习:从训练数据集中学习模型,对测试数据进行预测 回归问题:输入变量与输出变量均为连续变量的预测问题 分类问题:输出变量为有限个离散变量的预测问题 标注问题:输入变量与输出变量均为变量序列的预测问题 损失函数:度量预测错误的程度 经验风险:训练数据集的平均损失 期望风险:损失函数的期望值 根据大数定律,当样本容量N趋于无穷时,经验风险趋于期望风险 泛化能力:指由该方法学习到的模型对未知数据的预测能力 过

统计学习方法 李航---第5章 决策树

第5章 决策树 决策树(decision tree)是一种基本的分类与回归方法.本章主要讨论用于分类的决策树.决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程.它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布.其主要优点是模型具有可读性,分类速度快.学习时,利用训练数据,根据损失函数最小化的原则建立决策树模型.预测时,对新的数据,利用决策树模型进行分类.决策树学习通常包括3个步骤:特征选择.决策树的生成和决策树的修剪. 5.1 决策树模

每月学习数理统计--《统计学习方法—李航》(1)

现在这本书已经看完70%,在看完后我将会将每一章的内容按照自己的理解并结合其他书籍包括<<统计机器学习导论>>[1] ,<<机器学习>>[2],<<大数据分析>>[3]这三本书总结经典的几大算法原理与代码实现.下面是预计的写作思路: 一.分类学习 1.SVM 2.决策树 3.Logistic 回归 4.贝叶斯判别法 5.K近邻法 6.最小二乘法 7.最大熵模型 8.高斯混合模型 二.集成学习 1.Random Forest 2.GBD

统计学习方法 李航---第6章 逻辑回归与最大熵模型

第6章 逻辑回归与最大熵模型 逻辑回归(logistic regression)是统计学习中的经典分类方法.最大嫡是概率模型学习的一个准则将其推广到分类问题得到最大熵模型(maximum entropy model).逻辑回归模型与最大熵模型都属于对数线性模型. 6.1 逻辑回归模型 定义6.1(逻辑分布):设X是连续随机变量,X服从逻辑斯谛分布是指 X具有下列分布函数和密度函数 式中,u为位置参数,r>0为形状参数. 逻辑分布的密度函数f(x)和分布函数F(x)的图形如图所示.分布函数属于逻辑

统计学习方法 李航---第11章 条件随机场

第11章 条件随机场 条件随机场(conditional random field, CRF)是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔可夫随机场.条件随机场可以用于不同的预测问题,本章主要讲述线性链(linear chain)条件随机场在标注问题的应用,这时问题变成了由输入序列对输出序列预测的判别模型,形式为对数线性模型,其学习方法通常是极大似然估计或正则化的极大似然估计. 11.1 概率无向图模型 概率无向图模型(probabilist

统计学习方法 李航---第10章 隐马尔可夫模型

第10章隐马尔可夫模型 隐马尔可夫模型(hidden Markov model, HMM)是可用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型. 10.1 隐马尔可夫模型的基本概念 定义10.1 (隐马尔可夫模型) 隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程.隐藏的马尔可夫链随机生成的状态的序列,称为状态序列(state sequence):每个状态生成一个观

统计学习方法 李航---第7章 支持向量机

第7章 支持向量机 支持向量机(support vector machines, SVM)是一种二类分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器:支持向量机还包括核技巧,这使它成为实质上的非线性分类器.支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划(convex quadratic programming)的问题,也等价于正则化的合页损失函数的最小化问.支持向量机的学习算法是求解凸二次规划的最优化算法. 支持向量机学习模型:线性可分支持向量机(linear s