利用python决策树分析iris数据及树状图绘制

  • 数据说明
  • 数据划分
  • 模型训练及评估
    • 模型训练代码
    • 模型大致评估
  • 树状图绘制
    • Graphviz安装配置及入门
  • 代码汇总
  • 基地部门公众号

数据说明

  • 数据来源:https://archive.ics.uci.edu/ml/index.php

  • 4个变量,分别为:
    'feature_names': ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']

  • 分类类标有:'setosa', 'versicolor', 'virginica'三种花型

    import matplotlib.pyplot as plt
    import numpy as np
    from sklearn.datasets import load_iris
    from sklearn.tree import DecisionTreeClassifier
    #载入数据
    iris=load_iris()
    
  • 如果下载的数据是txt文件存储的,类似如下图,需要对分类标签数值化,用到函数LabelEncoder进行标签编码:

    import pandas as pd
    from sklearn.tree import DecisionTreeClassifier
    import sklearn.preprocessing as sp
    from sklearn.model_selection import train_test_split
    import numpy as np
    data=pd.read_table(r'G:\机器学习\书籍阅读\python爬虫\iris.txt',sep=',',header=None)  #数据导入
    category = pd.Categorical(data[4])
    lab = sp.LabelEncoder()   #标签编码器
    type_d = lab.fit_transform(data[4])  #用标签编码器对样本编码
    X=list(zip(data[0],data[1],data[2],data[3]))
    

数据划分

  • 方法一
    利用Numpy库中的concatenate()函数,对数据进行选择。

    #没有一一列举,举一个使用方法
    train_data=np.concatenate((np.array(X)[0:40,:],np.array(X)[50:90,:],np.array(X)[100:140,:]),axis=0)
    
  • 方法二
    导入模块,随机选择多少比例

    from sklearn.model_selection import train_test_split
    X_tr,X1_te,type_tr,type1_te= train_test_split(X, type_d,test_size=0.2) #训练集占80%,测试集占20%
    

模型训练及评估

模型训练代码

clf=DecisionTreeClassifier()
clf.fit(X_tr, type_tr)
score=clf.score(X1_te,type1_te)  #正确率
pre_data=clf.predict(X1_te)  #对测试集数据,预测其类别标签

模型大致评估

  • 检测数据与预测数据比较
    方法一:cop=sum(type1_te==pre_data) #求出模型预测测试集正确个数
    方法二:

    #使用循环结构求解模型预测测试集正确个数
    for i in range(len(pre_data)):if pre_data[i]==type1_te[i]:a=1compare.append(a)else:a=0compare.append(a)
    
  • 性能评估

    #输出准确率,召回率,F特征值和支持度
    from sklearn import metrics
    from sklearn.tree import export_graphviz    # 导入的是一个函数
    a=metrics.classification_report(type1_te,pre_data)
    b=metrics.confusion_matrix(type1_te,pre_data)
    

树状图绘制

Graphviz安装配置及入门

  • 安装包下载:graphviz-2.38.msi

    with open('G:/机器学习/书籍阅读/iris.dot', 'w', encoding='utf-8') as f:f = export_graphviz(clf,  out_file=f,filled=True,rounded=True) #filled=True,rounded=True :前面一个设置是填充颜色,后面一个是圆形框
    
  • 使用下面这个软件打开iris.dot文件

  • 决策树的效果图

代码汇总

"决策树"
#分类及回归树(CART)、ID3算法、C4.5算法,随机森林算法,梯度推进机(GBM)
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
import sklearn.preprocessing as sp
from sklearn.model_selection import train_test_split
import numpy as np
data=pd.read_table(r'G:\机器学习\书籍阅读\python爬虫\iris.txt',sep=',',header=None)
category = pd.Categorical(data[4])
lab = sp.LabelEncoder()   #标签编码器
type_d = lab.fit_transform(data[4])  #用标签编码器对样本编码
clf=DecisionTreeClassifier()
X=list(zip(data[0],data[1],data[2],data[3]))
#数据集划分 方法一
X_tr,X1_te,type_tr,type1_te= train_test_split(X, type_d,test_size=0.2)
#方法二划分数据集
train_data=np.concatenate((np.array(X)[0:40,:],np.array(X)[50:90,:],np.array(X)[100:140,:]),axis=0)
clf.fit(X_tr, type_tr)
score=clf.score(X1_te,type1_te)
pre_data=clf.predict(X1_te)
#检测数据与预测数据比较
#方法一
all=sum(type1_te==pre_data)
# 方法二
compare=[]
for i in range(len(pre_data)):if pre_data[i]==type1_te[i]:a=1compare.append(a)else:a=0compare.append(a)
#输出准确率,召回率,F特征值和支持度
from sklearn import metrics
from sklearn.tree import export_graphviz    # 导入的是一个函数
a=metrics.classification_report(type1_te,pre_data)
b=metrics.confusion_matrix(type1_te,pre_data)
with open('G:/机器学习/书籍阅读/iris.dot', 'w', encoding='utf-8') as f:f = export_graphviz(clf,  out_file=f,filled=True,rounded=True)

基地部门公众号

利用python决策树分析iris数据及树状图绘制相关推荐

  1. Tree Map:树状图——绘制COVID-19阵列图

    Tree Map树状图, 可视化 饼状图用于表示每个数据在总体中的占比, 但当数据个体数量较多,规模差异较大时, 饼状图无法很好展现. 树状图是一种通过空间填充占比展示数据比率的可视化方式.能够很好的 ...

  2. word列表数据计算机,怎么把树状图的数据填成excel表格-谁会计算机啊,怎么把word里的表格数据转换成簇状......

    excel中生成后的数据透视表如何把树形结构每层的空... 打开Word文档窗口,切换到"插入"功能区.在"插图"分组中单击"图表"按钮. ...

  3. MATLAB | 绘图复刻(三) | 分层聚类分析图:树状图+热图

    好久不见啊,今天时绘图复刻第三期,这期画的比较难应该文章也不会太短... 前段时间发现公众号SCIPainter发布了一期名为<如何对基因和蛋白质的表达丰度进行相关性分析>,其中有一幅图很 ...

  4. MATLAB | 全网唯一,使用MATLAB绘制精致的环形树状图

    绘制效果 请叫我平平无奇的绘图天才,这期一次性带来俩工具函数,分别是两层和三层的环形树状图,可以用来展示数据分类和层级: 理顺层级关系属实理得头秃,代码编写不易点个赞叭!! 由于工具函数过长,将被放在 ...

  5. Linux命令之pstree - 以树状图显示进程间的关系

    2019独角兽企业重金招聘Python工程师标准>>> pstree命令以树状图显示进程间的关系(display a tree of processes).ps命令可以显示当前正在运 ...

  6. Java树状图展示的实现

    Java树状图展示的实现 在项目中经常会遇到将数据以树状图的形式展现出来,如图: 有时候不仅要构建树结构,还要计算每个节点拥有的成员数量. 由于我们不能确定树的大小和层级就不能用常规的方法进行展示,我 ...

  7. MATLAB | 全网唯一,使用MATLAB绘制矩形树状图

    绘制效果 全网唯一这四个字我都快说腻了,请叫我绘图小天才,又双叒叕写了一个工具函数发到了MATHWORKS,矩形树状图主要用于直观展示各个元素的分类和占比. 编写不易点个赞叭~~ 基本使用 需要准备一 ...

  8. 利用Python对NBA SportUV数据进行可视化及分析

    利用Python对NBA SportUV数据进行可视化及分析 SportUV是2005年,由以色列计算机科学家Gal Oz和Miky Tamir 创立的,其实,最早这两位大牛是搞导弹跟踪和高级光学识别 ...

  9. 利用python简单分析抓包数据

    利用python简单分析抓包数据 wireshark的数据 先读一行看看长啥样 import json data_file = r'E:\download\data.json' with open(d ...

最新文章

  1. ntrip获取源列表_Ntrip通讯协议怎么样?
  2. 解决java.sql.SQLException: Parameter number X is not an OUT parameter--转
  3. 最新:全球大型数据中心总数增至597个,是2015年数据中心数量的两倍
  4. Wget用法、参数解释的比较好的一个文章
  5. Flutter通过MethodChannel实现Flutter 与Android iOS 的双向通信
  6. 字符串过滤非数字c语言,【新手】【求思路】如何判断用户输入的字符串中是否含有非数字?...
  7. ADO.NET Entity Framework支持多Provider
  8. 水利水电水资源模拟试题3
  9. SPSS 相关系数例题、斯皮尔曼相关系数SPSS分析
  10. xp计算机定时关机怎么批销,(XP电脑定时自动关机命令.doc
  11. EditPlus中配置JSON格式化功能
  12. 徐思201771010132《面向对象程序设计(Java)》第十二周学习总结
  13. 像素测量工具_像素大厨PxCook for Mac(自动标注工具)中文免费版
  14. 面试题:搜狐百度 看1 复杂一点的面试题 笔试题
  15. python重装之前要卸载吗_关于fedroa下安全地卸载和重装python
  16. 关于结构化、半结构化、非结构化数据的理解
  17. 取消关闭计算机怎么弄,win7自动关机命令怎么设置和取消
  18. 【编译原理】Python语法分析LL(1)、LR(1)
  19. Argo CD系列视频图文版之安装 argocd 并运行示例
  20. 快速把照片做成MV,用什么软件好?抖音火爆效果制作

热门文章

  1. oracle biee catalog,Biee 迁移和刷新GUIDs
  2. 到底怎样刷牙才是正确的?
  3. ElementUI 消息提示组件Message
  4. SpringBoot 发送邮箱验证码(HTML模板)
  5. Color--颜色值以及颜色属性(学习记录)
  6. 带后台管理的超酷jquery+ajax幻灯相册php源码,带后台管理的超酷jQuery+ajax幻灯相册PHP源码...
  7. 相关的应用计算机辅助研究的论文,计算机辅助技术应用研究论文
  8. 2020年我国将研制出时速600公里高速磁浮样车
  9. 删除数组中的指定元素
  10. 使用Go语言ORM库worm访问PostgreSQL数据库