python机器学习实现决策树


Posted in Python onNovember 11, 2019

本文实例为大家分享了python机器学习实现决策树的具体代码,供大家参考,具体内容如下

# -*- coding: utf-8 -*-
"""
Created on Sat Nov 9 10:42:38 2019

@author: asus
"""
"""
决策树
目的:
1. 使用决策树模型
2. 了解决策树模型的参数
3. 初步了解调参数
要求:
基于乳腺癌数据集完成以下任务:
1.调整参数criterion,使用不同算法信息熵(entropy)和基尼不纯度算法(gini)
2.调整max_depth参数值,查看不同的精度
3.根据参数criterion和max_depth得出你初步的结论。
"""

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import mglearn 
from sklearn.model_selection import train_test_split
#导入乳腺癌数据集
from sklearn.datasets import load_breast_cancer
from sklearn.tree import DecisionTreeClassifier


#决策树并非深度越大越好,考虑过拟合的问题
#mglearn.plots.plot_animal_tree()
#mglearn.plots.plot_tree_progressive()

#获取数据集
cancer = load_breast_cancer()
#对数据集进行切片
X_train,X_test,y_train,y_test = train_test_split(cancer.data,cancer.target,
       stratify = cancer.target,random_state = 42)
#查看训练集和测试集数据      
print('train dataset :{0} ;test dataset :{1}'.format(X_train.shape,X_test.shape))
#建立模型(基尼不纯度算法(gini)),使用不同最大深度和随机状态和不同的算法看模型评分
tree = DecisionTreeClassifier(random_state = 0,criterion = 'gini',max_depth = 5)
#训练模型
tree.fit(X_train,y_train)
#评估模型
print("Accuracy(准确性) on training set: {:.3f}".format(tree.score(X_train, y_train)))
print("Accuracy(准确性) on test set: {:.3f}".format(tree.score(X_test, y_test)))
print(tree)


# 参数选择 max_depth,算法选择基尼不纯度算法(gini) or 信息熵(entropy)
def Tree_score(depth = 3,criterion = 'entropy'):
 """
 参数为max_depth(默认为3)和criterion(默认为信息熵entropy),
 函数返回模型的训练精度和测试精度
 """
 tree = DecisionTreeClassifier(criterion = criterion,max_depth = depth)
 tree.fit(X_train,y_train)
 train_score = tree.score(X_train, y_train)
 test_score = tree.score(X_test, y_test)
 return (train_score,test_score)

#gini算法,深度对模型精度的影响
depths = range(2,25)#考虑到数据集有30个属性
scores = [Tree_score(d,'gini') for d in depths]
train_scores = [s[0] for s in scores]
test_scores = [s[1] for s in scores]

plt.figure(figsize = (6,6),dpi = 144)
plt.grid()
plt.xlabel("max_depth of decision Tree")
plt.ylabel("score")
plt.title("'gini'")
plt.plot(depths,train_scores,'.g-',label = 'training score')
plt.plot(depths,test_scores,'.r--',label = 'testing score')
plt.legend()


#信息熵(entropy),深度对模型精度的影响
scores = [Tree_score(d) for d in depths]
train_scores = [s[0] for s in scores]
test_scores = [s[1] for s in scores]

plt.figure(figsize = (6,6),dpi = 144)
plt.grid()
plt.xlabel("max_depth of decision Tree")
plt.ylabel("score")
plt.title("'entropy'")
plt.plot(depths,train_scores,'.g-',label = 'training score')
plt.plot(depths,test_scores,'.r--',label = 'testing score')
plt.legend()

运行结果:

python机器学习实现决策树

python机器学习实现决策树

python机器学习实现决策树

很明显看的出来,决策树深度越大,训练集拟合效果越好,但是往往面对测试集的预测效果会下降,这就是过拟合。

参考书籍: 《Python机器学习基础教程》

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
一步步解析Python斗牛游戏的概率
Feb 12 Python
python操作 hbase 数据的方法
Dec 18 Python
python difflib模块示例讲解
Sep 13 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
Jan 29 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
Jan 15 Python
python实现翻转棋游戏(othello)
Jul 29 Python
Python绘制热力图示例
Sep 27 Python
django连接mysql数据库及建表操作实例详解
Dec 10 Python
selenium 多窗口切换的实现(windows)
Jan 18 Python
GitHub上值得推荐的8个python 项目
Oct 30 Python
selenium判断元素是否存在的两种方法小结
Dec 07 Python
SpringBoot首页设置解析(推荐)
Feb 11 Python
Python SQLAlchemy入门教程(基本用法)
Nov 11 #Python
django中间键重定向实例方法
Nov 10 #Python
Java文件与类动手动脑实例详解
Nov 10 #Python
python语言线程标准库threading.local解读总结
Nov 10 #Python
Python 脚本拉取 Docker 镜像问题
Nov 10 #Python
Python如何优雅获取本机IP方法
Nov 10 #Python
python argparser的具体使用
Nov 10 #Python
You might like
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
thinkPHP框架实现的短信接口验证码功能示例
2018/06/20 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
2019/05/27 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
JavaScript对象模型-执行模型
2008/04/28 Javascript
使用js对select动态添加和删除OPTION示例代码
2013/08/12 Javascript
js实现表格字段排序
2014/02/19 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
node.js发送邮件email的方法详解
2017/01/06 Javascript
JS调用Android、Ios原生控件
2017/01/06 Javascript
正则 js分转元带千分符号详解
2017/03/08 Javascript
JS给按钮添加跳转功能类似a标签
2017/05/30 Javascript
深入分析element ScrollBar滚动组件源码
2019/01/22 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
2019/07/10 jQuery
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
Python os模块学习笔记
2015/06/21 Python
Python二叉搜索树与双向链表转换实现方法
2016/04/29 Python
Python 查看文件的编码格式方法
2017/12/21 Python
TensorFlow实现从txt文件读取数据
2020/02/05 Python
编写python代码实现简单抽奖器
2020/10/20 Python
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
Foot Locker澳洲官网:美国运动服和鞋类零售商
2019/10/11 全球购物
VisionPros美国站:加拿大在线隐形眼镜和眼镜零售商
2020/02/11 全球购物
项目合作计划书
2014/01/09 职场文书
关于打架的检讨书
2014/01/17 职场文书
《雪地里的小画家》教学反思
2014/02/22 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
通知范文怎么写
2015/04/16 职场文书
2015年营业员工作总结
2015/04/23 职场文书
卫生主题班会
2015/08/14 职场文书
幼儿园大班教师随笔
2015/08/14 职场文书
浅谈golang 中time.After释放的问题
2021/05/05 Golang
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python
MySQL连表查询分组去重的实现示例
2021/07/01 MySQL