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写的创建文件夹自定义函数mkdir()
Aug 25 Python
Python的Flask框架中Flask-Admin库的简单入门指引
Apr 07 Python
Python中%r和%s的详解及区别
Mar 16 Python
python学习教程之使用py2exe打包
Sep 24 Python
java判断三位数的实例讲解
Jun 10 Python
详解Python中的分支和循环结构
Feb 11 Python
python之MSE、MAE、RMSE的使用
Feb 24 Python
Win 10下Anaconda虚拟环境的教程
May 18 Python
python如何爬取网页中的文字
Jul 28 Python
Pycharm中使用git进行合作开发的教程详解
Nov 17 Python
python3 实现mysql数据库连接池的示例代码
Apr 17 Python
Python使用DFA算法过滤内容敏感词
Apr 22 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编写大型网站问题集
2007/03/06 PHP
用php代码限制国内IP访问我们网站
2015/09/26 PHP
最新最全PHP生成制作验证码代码详解(推荐)
2016/06/12 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
PHP实现图片压缩
2020/09/09 PHP
Laravel使用RabbitMQ的方法示例
2019/06/18 PHP
一个用js实现的页内搜索代码
2007/05/23 Javascript
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
javascript引用类型指针的工作方式
2015/04/13 Javascript
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
JQuery实现DIV其他动画效果的简单实例
2016/09/18 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
JS实现可视化文件上传
2018/09/08 Javascript
Nodejs中获取当前函数被调用的行数及文件名详解
2018/12/12 NodeJs
Vue动态生成表格的行和列
2019/07/18 Javascript
Vue的click事件防抖和节流处理详解
2019/11/13 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
详解JavaScript中的链式调用
2020/11/27 Javascript
python计算方程式根的方法
2015/05/07 Python
pyqt5之将textBrowser的内容写入txt文档的方法
2019/06/21 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
python 数据提取及拆分的实现代码
2019/08/26 Python
Scrapy框架介绍之Puppeteer渲染的使用
2020/06/19 Python
法国美发器材和产品购物网站:Beauty Coiffure
2016/12/05 全球购物
Ramy Brook官网:美国现代女装品牌
2019/06/18 全球购物
Nº21官方在线商店:numeroventuno.com
2019/09/26 全球购物
如何删除一个表里面的重复行
2013/07/13 面试题
党性分析材料格式
2014/12/19 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
营运督导岗位职责
2015/04/10 职场文书
南京大屠杀观后感
2015/06/02 职场文书
村官2015年度工作总结
2015/10/14 职场文书
学校教代会开幕词
2016/03/04 职场文书
CSS子盒子水平和垂直居中的五种方法
2022/07/23 HTML / CSS