使用sklearn的决策树实现iris鸢尾花数据集的分类

要求:

建立分类模型,至少包含4个剪枝参数:max_depth、min_samples_leaf 、min_samples_split、max_features和criterion参数。

运用GridSearchCV,寻找出最优参数。

绘制出在不同的max_depth下的学习曲线。

步骤:

一、导入各种我们需要的模块或者数据集等

graphviz安装(安装完配置好路径还是不行的话重启一下电脑)

from sklearn import tree #导入树

from sklearn.tree import DecisionTreeClassifier #导入决策树分类器

from sklearn.datasets import load_iris #导入鸢尾花数据集

from sklearn.model_selection import train_test_split #分训练集测试集的类

from matplotlib import pyplot as plt #画图用的

from sklearn.model_selection import GridSearchCV #网格搜索

import pandas as pd

import graphviz #画决策树的,需要事先安装

二、将数据实例化,划分数据集和测试集

iris = load_iris() #将数据集实例化,别忘了括号

Xtrain,Xtest,Ytrain,Ytest = train_test_split(iris.data,iris.target,test_size=0.3) #将鸢尾花数据的特征矩阵和标签矩阵,按7:3的比例划分训练集和测试集,0.3是可以变的,也可以填0.4,注意X,Y的顺序

三、建立模型(三部曲:实例化、训练、评估)

clf = DecisionTreeClassifier() #实例化模型,括号不填criterion默认是‘gini’,也可以填criterion = 'entropy'

clf = clf.fit(Xtrain, Ytrain) #训练数据集

score = clf.score(Xtest, Ytest) #评估数据集

score #将评估结果打印出来,因为测试集和训练集划分的不同,可能每个人的结果也不同

1.PNG

四、画出决策树

feature_name = ['花萼长度','花萼宽度','花瓣长度','花瓣宽度'] #定义特征的名字,方便后面的阅读

dot_data = tree.export_graphviz(clf

,feature_names = feature_name

,class_names=["清风藤","云芝","锦葵"] #标签名字

,filled=True #框框填充颜色(可以不写)

,rounded=True #框框角是圆圆的(可以不写)

)

graph = graphviz.Source(dot_data) #导出树

graph

这就得到一棵原始的树

五、使用四个剪枝参数

clf = tree.DecisionTreeClassifier(max_depth=2 #最大深度是2,这个也可以填3或4试试看

,min_samples_leaf=5 #下一个叶子节点大于5会进行,小于5就不会再分

,min_samples_split=10 #最小分支节点,当前样本大于10才会分

,max_features=3 #最大特征数,有一个重要程度为0

)

clf = clf.fit(Xtrain, Ytrain)

score = clf.score(Xtest, Ytest)

score

可以把剪枝后的树画出来看看(代码和上面画树的一样)

2.png

dot_data = tree.export_graphviz(clf

,feature_names = feature_name

,class_names=["清风藤","云芝","锦葵"]

,filled=True

,rounded=True

)

graph = graphviz.Source(dot_data)

graph

六、绘制出在不同的max_depth下的学习曲线

test=[] #定义一个列表放分数

for i in range(10): #10次循环map_depth

clf = tree.DecisionTreeClassifier(max_depth=i+1)

clf = clf.fit(Xtrain, Ytrain)

score = clf.score(Xtest,Ytest)

test.append(score)

plt.plot(range(1,11),test,color="red") #横坐标是1-10,纵坐标是分数,颜色是红色

plt.xticks(range(1,11))#横坐标是1-10

plt.xlabel("max_depth") #横坐标标签

plt.ylabel("score") #纵坐标标签

plt.show() #展示画好的图(由图可知当map_depth为2时分数最高)

3.PNG

七、运用GridSearchCV,寻找出最优参数

parameters = {'criterion'

实验一 使用sklearn的决策树实现iris鸢尾花数据集的分类的更多相关文章

  1. sklearn CART决策树分类

    sklearn CART决策树分类 决策树是一种常用的机器学习方法,可以用于分类和回归.同时,决策树的训练结果非常容易理解,而且对于数据预处理的要求也不是很高. 理论部分 比较经典的决策树是ID3.C ...

  2. 【sklearn决策树算法】DecisionTreeClassifier(API)的使用以及决策树代码实例 - 鸢尾花分类

    决策树算法 决策树算法主要有ID3, C4.5, CART这三种. ID3算法从树的根节点开始,总是选择信息增益最大的特征,对此特征施加判断条件建立子节点,递归进行,直到信息增益很小或者没有特征时结束 ...

  3. 【机器学习】Iris Data Set(鸢尾花数据集)

    [机器学习]Iris Data Set(鸢尾花数据集) 注:数据是机器学习模型的原材料,当下机器学习的热潮离不开大数据的支撑.在机器学习领域,有大量的公开数据集可以使用,从几百个样本到几十万个样本的数 ...

  4. sklearn提供的自带的数据集

    sklearn 的数据集有好多个种 自带的小数据集(packaged dataset):sklearn.datasets.load_<name> 可在线下载的数据集(Downloaded ...

  5. 探索sklearn | 鸢尾花数据集

    1 鸢尾花数据集背景 鸢尾花数据集是原则20世纪30年代的经典数据集.它是用统计进行分类的鼻祖. sklearn包不仅囊括很多机器学习的算法,也自带了许多经典的数据集,鸢尾花数据集就是其中之一. 导入 ...

  6. Python——sklearn提供的自带的数据集

    sklearn提供的自带的数据集 sklearn 的数据集有好多个种 自带的小数据集(packaged dataset):sklearn.datasets.load_<name> 可在线下 ...

  7. [机器学习 ]PCA降维--两种实现 : SVD或EVD. 强力总结. 在鸢尾花数据集(iris)实做

    PCA降维--两种实现 : SVD或EVD. 强力总结. 在鸢尾花数据集(iris)实做 今天自己实现PCA,从网上看文章的时候,发现有的文章没有搞清楚把SVD(奇异值分解)实现和EVD(特征值分解) ...

  8. 201871010110-李华 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 (1)理解并掌握代码风格及设计规范:(2)通过任务3进行协作开发,尝试进行代码复审,在进行同伴复审的过程中体会结对 ...

  9. 201871030125-王芬 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    实验三 软件工程结对项目 项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs ...

随机推荐

  1. 腾讯大牛教你简单的自动化测试模型(Python+Selenium)

    今天讲解简单的自动化测试模型,对于刚接触自动化测试的同学,由于没有编程语言的基础,是搞不懂代码里面的函数.封装.包以及其他概念,只是了解字符串.数组.元组及字典这种最基本的名词,更不懂自动化测试框架了 ...

  2. win10安装JDK cmd中可以运行java,但不能用javac,解决方案

    win10安装JDK cmd中可以运行java,但不能用javac 网上教程(1)新建->变量名"JAVA_HOME",变量值"C:\Java\jdk1.8.0_0 ...

  3. PJSIP开发指南

    一.通用设计 1.1   架构 1.1.1        通信图 下面的图展示了SIP消息在PJSIP组件间从后端到前端如何传递的. 1.1.2        类图 下面的图显示类视图 1.2   E ...

  4. 拾色器,可以取出电脑屏幕的任何颜色,ui以及程序员前端等常用软件,文件很小,300K

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985,转载请说明出处. 今天给大家介绍一个小软件,挺实用的,叫做拾色器. 用途:取出电脑屏幕的任意颜色,当你 ...

  5. android,在java代码中,如何给textview设置不同的颜色,以及引用color中资源设置颜色

    textV.setTextColor(Color.parseColor("#FF0000")); <pre name="code" class=" ...

  6. Mono集成中使用api获取当前mono 调用堆栈的方法

    // 在mono源代码层级中加如下两个api 可以获取堆栈字符串 这两个api我新加的,原来没有.基于原来的代码改的. // add by bodong#if PLATFORM_WIN32 __dec ...

  7. 牛顿迭代法解非线性方程组(MATLAB版)

    牛顿迭代法,又名切线法,这里不详细介绍,简单说明每一次牛顿迭代的运算:首先将各个方程式在一个根的估计值处线性化(泰勒展开式忽略高阶余项),然后求解线性化后的方程组,最后再更新根的估计值.下面以求解最简 ...

  8. FRP代理链

    一.实验拓扑: 二.实验测试 1.vps上开启frp服务端服务 2.在DMZ区域机器上开启frp客户端,同时再开启下一层代理链的服务端 3.在内网A区域中的机器上开启第二次frp代理的客户端服务 4. ...

  9. VMware中卸载安装Ubuntu系统 ——Ubuntu系统配置(一)

    由于之前配置给Ubuntu的磁盘空间不足,进行了扩展磁盘空间,结果Ubuntu无法开机了,试了很多种办法都没成功,也有些后悔没有记录下配置过程,于是决定卸载Ubuntu进行重新安装和配置. 一.VMw ...

  10. Spring security OAuth2.0认证授权学习第二天(基础概念-授权的数据模型)

    如何进行授权即如何对用户访问资源进行控制,首先需要学习授权相关的数据模型. 授权可简单理解为Who对What(which)进行How操作,包括如下: Who,即主体(Subject),主体一般是指用户 ...