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调用浏览器并打开一个网址的例子
Jun 05 Python
python实现mysql的读写分离及负载均衡
Feb 04 Python
对tensorflow 的模型保存和调用实例讲解
Jul 28 Python
Python创建一个空的dataframe,并循环赋值的方法
Nov 08 Python
python plotly绘制直方图实例详解
Jul 22 Python
wxPython电子表格功能wx.grid实例教程
Nov 19 Python
Linux下升级安装python3.8并配置pip及yum的教程
Jan 02 Python
python随机生成大小写字母数字混合密码(仅20行代码)
Feb 01 Python
python3.7调试的实例方法
Jul 21 Python
OpenCV3.3+Python3.6实现图片高斯模糊
May 18 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 Python
 分享一个Python 遇到数据库超好用的模块
Apr 06 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
zend api扩展的php对象的autoload工具
2011/04/18 PHP
JSON在PHP中的应用介绍
2012/09/08 PHP
PHPAnalysis中文分词类详解
2014/06/13 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
关于jquery input textare 事件绑定及用法学习
2013/04/03 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
2013/04/18 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
2014/05/05 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
AngularJS实现ajax请求的方法
2016/11/22 Javascript
Node学习记录之cluster模块
2017/05/31 Javascript
JavaScript算法教程之sku(库存量单位)详解
2017/06/29 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
Vue Element 分组+多选+可搜索Select选择器实现示例
2018/07/23 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
[52:06]完美世界DOTA2联赛决赛日 Inki vs LBZS 第一场 11.08
2020/11/10 DOTA
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
Python模拟三级菜单效果
2017/09/11 Python
Python之读取TXT文件的方法小结
2018/04/27 Python
python占位符输入方式实例
2019/05/27 Python
基于打开pycharm有带图片md文件卡死问题的解决
2020/04/24 Python
Grid 宫格常用布局的实现
2020/01/10 HTML / CSS
Nisbets法国:英国最大的厨房和餐饮设备供应商
2019/03/18 全球购物
曼城官方网上商店:Manchester City
2019/09/10 全球购物
Kiwi.com中国:找到特价机票并发现新目的地
2019/10/27 全球购物
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
美容师的职业规划书
2013/12/27 职场文书
电子信息专业自荐书
2014/02/04 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
店铺转让协议书
2014/12/02 职场文书
实习科室评语
2015/01/04 职场文书
用几道面试题来看JavaScript执行机制
2021/04/30 Javascript