python-机器学习-决策树实现

原创

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()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92

运行结果:
python-机器学习-决策树实现_第1张图片
python-机器学习-决策树实现_第2张图片
python-机器学习-决策树实现_第3张图片
很明显看的出来,决策树深度越大,训练集拟合效果越好,但是往往面对测试集的预测效果会下降,这就是过拟合。

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

                                
文章最后发布于: 2019-11-09 15:04:12
        
展开阅读全文
0 个人打赏
发表评论
还能输入1000个字符

3.1决策树理论--python深度机器学习

08-03 阅读数 166

参考彭亮老师的视频教程:转载请注明出处及彭亮老师原创视频教程:http://pan.baidu.com/s/1kVNe5EJ0.机器学习中分类和预测算法的评估:准确率速度强壮行可规模性可解释性  1.... 博文 来自: aijun123456的博客

机器学习】CART决策树原理及python实现

10-23 阅读数 28

本文为本人在学习机器学习决策树部分的一些笔记和思考,以及python编程实现算法的具体步骤决策树(decisiontree)是一类常见的机器学习方法.在已知各种情况发生概率的基础上,通过构成决策树来求... 博文 来自: 睡觉的咖啡

机器学习算法-python实现决策树-Decision tree(2) 决策树实现

04-25 阅读数 1万+

(转载请注明出处:http://blog.csdn.net/buptgshengod)1.背景   接着上一节说,没看到请先看一下上一节关于数据集的划分数据集划分。现在我们得到了每个特征值得信息熵增益... 博文 来自: 李博Garvin的专栏

五款高效率黑科技神器工具,炸裂好用,省时间

10-20 阅读数 1万+

loonggg读完需要4分钟速读仅需2分钟感觉我好久好久没有给大家分享高质量的软件和插件了。今天周末,难得在家休息一下,痛下决心,分享一些我认为的高效率工具软件给大家。废...... 博文

动画:用动画给女朋友讲解 TCP 四次分手过程

10-21 阅读数 2万+

作者 | 小鹿 来源 | 公众号:小鹿动画学编程

写在前边
大家好,我们又见面了,做为一个业余的动画师,上次的用动画的形式讲解 TCP 三次握手过程再各大平台收到了广大读者的喜爱,说文章有趣、有…


博文



程序员必须掌握的核心算法有哪些?

10-21 阅读数 5万+

由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,... 博文

python 程序员进阶之路:从新手到高手的100个模块

10-23 阅读数 3万+

在知乎和CSDN的圈子里,经常看到、听到一些 python 初学者说,学完基础语法后,不知道该学什么,学了也不知道怎么用,一脸的茫然。近日,CSDN的公众号推送了一篇博客,题目叫做《迷思:Python... 博文

Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)

10-22 阅读数 2万+

最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成) one 樱花树

动…


博文



程序员不懂浪漫?胡扯!

10-22 阅读数 1万+

程序员男朋友你的程序员男朋友为你做过什么暖心的事情呢?我的男朋友是一个程序员,他有很多大家在网络上吐槽的程序员的缺点,比如加班很多,没空陪我吃饭逛街看电影,比如说他有的时...... 博文

Java 8:一文掌握 Lambda 表达式

10-23 阅读数 1万+

本文将介绍 Java 8 新增的 Lambda 表达式,包括 Lambda 表达式的常见用法以及方法引用的用法,并对 Lambda 表达式的原理进行分析,最后对 Lambda 表达式的优缺点进行一个总... 博文

Python中几个非常有趣的模块

10-24 阅读数 1万+

最近学习Python,发现了许多有趣的模块。感觉开启了新世界的大门,因为我也不是对所有模块都熟悉,所以今天不是讲代码。 1、ItChat 这是一个微信自动回复的模块,因为我微信一直无法登陆,所以也没有... 博文

Linux/C/C++ 不可错过的好书

10-24 阅读数 4161

来源:公众号【编程珠玑】

作者:守望先生

ID:shouwangxiansheng

前言

经常有读者让我推荐书籍,这次我就把我私藏的计算机书单分享给你们!不过由于时间匆忙,不会进行更加详细…


博文



Python自动化完成tb喵币任务

10-25 阅读数 1万+

2019双十一,tb推出了新的活动,商店喵币,看了一下每天都有几个任务来领取喵币,从而升级店铺赚钱,然而我既想赚红包又不想干苦力,遂使用python来进行手机自动化操作,目测全网首发!

用到的库:



博文



从月薪3K的中专生,到身家千万的CTO!人生最大的对手,就是自已

10-25 阅读数 1万+

关注“技术领导力”博客,独家大厂干货推送

文/Daniel.W

David坐在我对面,窗外是梦境般的外滩夜景,繁星点点的璀璨灯火,散落在黄浦江两岸。我转过头对David说,你丫挺会享受啊,约我…


博文



这应该是把计算机网络五层模型讲的最好是文章了,看不懂你打我

10-25 阅读数 1万+

帅地:用心写好每一篇文章!

前言
天各一方的两台计算机是如何通信的呢?在成千上万的计算机中,为什么一台计算机能够准确着寻找到另外一台计算机,并且把数据发送给它呢?
可能很多人都听说过网络通信的 5 …


博文



单点登录(SSO)

10-26 阅读数 1万+

一、SSO(单点登录)介绍

SSO英文全称Single SignOn,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用…


博文



漫话:什么是 https ?这应该是全网把 https 讲的最好的一篇文章了

10-26 阅读数 1万+

今天这篇文章,讲通过对话的形式,让你由浅入深着知道,为什么 Https 是安全的。

一、对称加密

一禅:在每次发送真实数据之前,服务器先生成一把密钥,然后先把密钥传输给客户端。之后服务器给客…


博文



史上最全的mysql基础教程

10-28 阅读数 3673

启动与停止

启动mysql服务
sudo /usr/local/mysql/support-files/mysql.server start
停止mysql服务
sudo /usr/loc…


博文



为什么你学不会递归?告别递归,谈谈我的经验

10-28 阅读数 1万+

可能很多人在大一的时候,就已经接触了递归了,不过,我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是,给我的感觉就是,递归太神奇了! 可能也有一大部分人知道递归,也能看的懂递归,但在实... 博文

大学四年,分享看过的优质书籍

10-27 阅读数 1万+

数据结构与算法是我在大学里第一次接触到的,当时学了很多其他安卓、网页之类的,一开始就感觉纳闷,数据结构和算法学这个有啥用,再加上上的是一所野鸡大学,老师讲的也是模模糊糊,平时做项目、练习也几乎不用数据... 博文

2019双十一淘宝天猫刷喵币

10-28 阅读数 1万+

实现步骤

下载并安装Auto.js
官网网址:https://hyb1996.github.io/AutoJs-Docs
Github地址:https://github.com/hyb1996/Au…


博文



有哪些让程序员受益终生的建议

10-28 阅读数 1万+

从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。

敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自…


博文



最近程序员频繁被抓,如何避免面向监狱编程!?

10-28 阅读数 5万+

最近,有关程序员因为参与某些项目开发导致被起诉,甚至被判刑的事件发生的比较多: 某程序员因为接了个外包,帮别人写了个软件,结果这个软件被用于赌博导致被抓。 某公司利用爬虫抓取用户信息,最后被发现,导致... 博文

一文搞懂什么是TCP/IP协议

10-28 阅读数 1万+

什么是TCP/IP协议?

计算机与网络设备之间如果要相互通信,双方就必须基于相同的方法.比如如何探测到通信目标.由哪一边先发起通信,使用哪种语言进行通信,怎样结束通信等规则都需要事先确定.不同的硬件…


博文



各大公司在GitHub上开源投入排名分析

11-05 阅读数 2120

基于GitHub的数据进行分析各个公司在开源上的投入排名 博文

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

10-28 阅读数 7万+

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频... 博文

学习 Java 应该关注哪些网站?

10-28 阅读数 1万+

经常有一些读者问我:“二哥,学习 Java 应该关注哪些网站?”,我之前的态度一直是上知乎、上搜索引擎搜一下不就知道了。但读者对我这个态度很不满意,他们说,“我在问你,又不是问知乎,问搜索引擎。”你还... 博文

哪些 Java 知识不需要再学了

10-28 阅读数 9254

张无忌在学太极拳的时候,他爹的师父张三丰告诫他一定要把之前所学习的武功全部忘掉,忘得越多就会学得越快。 同样的,自学 Java 的时候一定要先知道哪些 Java 知识不需要再学了,毕竟技术的更新迭代就... 博文

二叉树(从建树、遍历到存储)Java

11-06 阅读数 430

目录一、结构二、二叉树的遍历1.前序遍历(递归+非递归)2.中序遍历(递归+非递归)3.后序遍历(递归+非递归)4.层次遍历代码功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图... 博文

Vue + Spring Boot 项目实战(十四):用户认证方案与完善的访问拦截

11-03 阅读数 2658

本篇文章主要讲解 token、session 等用户认证方案的区别并分析常见误区,以及如何通过前后端的配合实现完善的访问拦截,为下一步权限控制的实现打下基础。... 博文

大学四年,我把私藏的自学「学习网站/实用工具」都贡献出来了

10-29 阅读数 2万+

在分享之前,先说说初学者如何学习编程,这个话题想必非常的重要,要学好编程,给你一些学习网站也好、实用工具也好,但前提是你知道如何去学习它。 见过很多初学者,以及小鹿我刚开始学习的时候,也是自己瞎摸索,... 博文

中国麻将:世界上最早的区块链项目

10-29 阅读数 2万+

中国麻将:世界上最早的区块链项目

最近区块链这个玩意又被市场搞的很是火热,相信大部分人都不太清楚这玩意到底是怎么样的一个概念,它来了,它来了,它到底是啥~ 国家都开始发文支持了,下面是一个通俗易懂的…


博文



比特币原理详解

10-29 阅读数 7296

一、什么是比特币

比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是…


博文



Python 基础(一):入门必备知识

10-30 阅读数 1万+

Python 入门必备知识,你都掌握了吗? 博文

Spring简介、框架核心、优缺点、应用场景

10-29 阅读数 2649

文章目录Spring简介Spring的设计目标Spring的优缺点优点缺点Spring的应用场景 Spring简介

Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是…


博文



这30个CSS选择器,你必须熟记(上)

10-30 阅读数 1万+

关注前端达人,与你共同进步CSS的魅力就是让我们前端工程师像设计师一样进行网页的设计,我们能轻而易举的改变颜色、布局、制作出漂亮的影音效果等等,我们只需要改几行代码,不需...... 博文

L 型程序员,要火!

10-29 阅读数 7633

作者 | 胡巍巍出品 | CSDN(ID:CSDNnews)试问人间职业谁最迷?敲代码的程序员算一个。既要被当作修电脑的,还要被当作做网站的;既要被当作杀毒的,还要被当作...... 博文

兼职程序员一般可以从什么平台接私活?

10-31 阅读数 2万+

这个问题我进行了系统性的总结,以下将进行言简意赅的说明和渠道提供,希望对各位小猿/小媛们有帮助~

根据我们的经验,程序员兼职主要分为三种:兼职职位众包、项目整包和自由职业者驻场。

所谓的兼职职位众…


博文



程序员接私活怎样防止做完了不给钱?

10-31 阅读数 1万+

首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。

那…


博文



                
                                

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

你可能感兴趣的:(Python学习)