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 正则式使用心得
May 07 Python
Python使用MD5加密字符串示例
Aug 22 Python
python获取远程图片大小和尺寸的方法
Mar 26 Python
初步解析Python中的yield函数的用法
Apr 03 Python
python matlibplot绘制多条曲线图
Feb 19 Python
python学习开发mock接口
Apr 28 Python
python向字符串中添加元素的实例方法
Jun 28 Python
Python 静态方法和类方法实例分析
Nov 21 Python
Python实现序列化及csv文件读取
Jan 19 Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 Python
python 破解加密zip文件的密码
Apr 22 Python
python基于turtle绘制几何图形
Jun 15 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
Zerg基本策略
2020/03/14 星际争霸
php使用sql server验证连接数据库的方法
2014/12/25 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
js传值 判断
2006/10/26 Javascript
动态改变textbox的宽高的js
2006/10/26 Javascript
Jquery 常用方法经典总结
2010/01/28 Javascript
jquery URL参数判断,确定菜单样式
2010/05/31 Javascript
jQuery学习笔记之jQuery选择器的使用
2010/12/22 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
jQuery实现的选择商品飞入文本框动画效果完整实例
2016/08/10 Javascript
常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数
2016/09/23 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
详解浏览器渲染页面过程
2017/02/09 Javascript
Vue2.0使用过程常见的一些问题总结学习
2017/04/10 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
webpack开发跨域问题解决办法
2017/08/03 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
微信开发之微信jssdk录音功能开发示例
2018/10/22 Javascript
详解VUE单页应用骨架屏方案
2019/01/17 Javascript
[02:00]最后,我终于出了辉耀
2018/03/27 DOTA
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
Python 绘图库 Matplotlib 入门教程
2018/04/19 Python
Python读取Excel数据并生成图表过程解析
2020/06/18 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
BONIA波尼亚新加坡官网:皮革手袋,鞋类和配件
2016/08/25 全球购物
Jimmy Choo美国官网:周仰杰鞋子品牌
2018/06/08 全球购物
艺术爱好者的自我评价分享
2013/10/08 职场文书
消防安全汇报材料
2014/02/08 职场文书
双方协议书
2014/04/22 职场文书
保护环境建议书400字
2014/05/13 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
离职证明范本
2015/06/12 职场文书
银行安全保卫工作总结
2015/08/10 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
python 三边测量定位的实现代码
2021/04/22 Python