# coding=utf-8

 import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn import tree
from sklearn.metrics import precision_recall_curve #准确率与召回率
import numpy as np
#import graphviz import os
os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/' def get_data():
file_path = "Iris.xlsx" data = pd.read_excel(file_path)
loandata = pd.DataFrame(data)
ncol = (len(loandata.keys()))
print(ncol)
# l = list(data.head(0)) #获取表头
# print(l) feature1 = []
for i in range(ncol-1):
feature1.append("feature"+str(i))
print(feature1)
iris_x = data.iloc[1:, :ncol-1]#此处有冒号,不显示最后一列
iris_y = data.iloc[1:,ncol-1]#此处没有冒号,直接定位 '''计算到底有几个类别'''
from collections import Counter
counter = Counter(iris_y)
con = len(counter)
print(counter.keys())
class_names = []
for i in range(con):
class_names.append(list(counter.keys())[i])
x_train, x_test, y_train, y_test = train_test_split(iris_x,iris_y)
print(x_train)
print(y_test)
# return x_train, x_test, y_train, y_test #def dtfit(x_train, x_test, y_train, y_test): clf = tree.DecisionTreeClassifier()
clf = clf.fit(x_train,y_train)
predict_data = clf.predict(x_test)
predict_proba = clf.predict_proba(x_test)
from sklearn import metrics
# Do classification task,
# then get the ground truth and the predict label named y_true and y_pred
classify_report = metrics.classification_report(y_test, clf.predict(x_test))
confusion_matrix = metrics.confusion_matrix(y_train, clf.predict(x_train))
overall_accuracy = metrics.accuracy_score(y_train, clf.predict(x_train))
acc_for_each_class = metrics.precision_score(y_train,clf.predict(x_train), average=None)
overall_accuracy = np.mean(acc_for_each_class)
print(classify_report) import pydotplus
dot_data = tree.export_graphviz(clf, out_file=None,feature_names=feature1, filled=True, rounded=True, special_characters=True,precision = 4)
graph = pydotplus.graph_from_dot_data(dot_data)
graph.write_pdf("workiris.pdf")
return classify_report if __name__ == "__main__":
x = get_data()
#dtfit(x_train, x_test, y_train, y_test)

数据地址:http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data

保存后注意填写表头

iris数据集 决策树实现分类并画出决策树的更多相关文章

  1. scikit-learn机器学习(四)使用决策树做分类,并画出决策树,随机森林对比

    数据来自 UCI 数据集 匹马印第安人糖尿病数据集 载入数据 # -*- coding: utf-8 -*- import pandas as pd import matplotlib matplot ...

  2. ROC曲线是通过样本点分类概率画出的 例如某一个sample预测为1概率为0.6 预测为0概率0.4这样画出来,此外如果曲线不是特别平滑的话,那么很可能存在过拟合的情况

    ROC和AUC介绍以及如何计算AUC from:http://alexkong.net/2013/06/introduction-to-auc-and-roc/ ROC(Receiver Operat ...

  3. Spark Mllib里决策树二元分类使用.areaUnderROC方法计算出以AUC来评估模型的准确率和决策树多元分类使用.precision方法以precision来评估模型的准确率(图文详解)

    不多说,直接上干货! Spark Mllib里决策树二元分类使用.areaUnderROC方法计算出以AUC来评估模型的准确率 具体,见 Hadoop+Spark大数据巨量分析与机器学习整合开发实战的 ...

  4. 85、使用TFLearn实现iris数据集的分类

    ''' Created on 2017年5月21日 @author: weizhen ''' #Tensorflow的另外一个高层封装TFLearn(集成在tf.contrib.learn里)对训练T ...

  5. Iris数据集实战

    本次主要围绕Iris数据集进行一个简单的数据分析, 另外在数据的可视化部分进行了重点介绍. 环境 win8, python3.7, jupyter notebook 目录 1. 项目背景 2. 数据概 ...

  6. javascript实现朴素贝叶斯分类与决策树ID3分类

    今年毕业时的毕设是有关大数据及机器学习的题目.因为那个时间已经步入前端的行业自然选择使用JavaScript来实现其中具体的算法.虽然JavaScript不是做大数据处理的最佳语言,相比还没有优势,但 ...

  7. 机器学习笔记2 – sklearn之iris数据集

    前言 本篇我会使用scikit-learn这个开源机器学习库来对iris数据集进行分类练习. 我将分别使用两种不同的scikit-learn内置算法--Decision Tree(决策树)和kNN(邻 ...

  8. CART决策树(分类回归树)分析及应用建模

    一.CART决策树模型概述(Classification And Regression Trees)   决策树是使用类似于一棵树的结构来表示类的划分,树的构建可以看成是变量(属性)选择的过程,内部节 ...

  9. 利用ggplot2画出各种漂亮图片详细教程

    1.Why use ggplot2 ggplot2是我见过最human friendly的画图软件,这得益于Leland Wilkinson在他的著作<The Grammar of Graphi ...

随机推荐

  1. IE iframe cookie问题(p3p)

    IE iframe cookie问题(p3p) 前段时间碰到一个问题,就是在IE下,使用iFrame嵌入页面时,该页面的会话级别的cookie无法写入,导致服务端始终无法获取JSESSIONID,每次 ...

  2. 最新版Solr 7.2安装配置

    Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也可以通过Http Get操 ...

  3. Java 非线程安全的HashMap如何在多线程中使用

    Java 非线程安全的HashMap如何在多线程中使用 HashMap 是非线程安全的.在多线程条件下,容易导致死循环,具体表现为CPU使用率100%.因此多线程环境下保证 HashMap 的线程安全 ...

  4. 【转载】HDFS 上传文件不均衡和Balancer太慢的问题

    向HDFS上传文件,如果是从某个datanode开始上传文件,会导致上传的数据优先写满当前datanode的磁盘,这对于运行分布式程序是非常不利的. 解决的办法: 1.从其他非datanode节点上传 ...

  5. 使用docker+jenkins构建nodejs前端项目

    前文使用Docker搭建Jenkins+Docker持续集成环境我们已经搭建了基于docker+jenkins的持续集成环境,并构建了基于maven的项目.这一节,我们继续扩展功能,增加对Nodejs ...

  6. 博客已经迁移到 http://imbotao.top 也会同步到这儿

    完全是看到别人搭建的 hexo + github Pages 博客界面很好看,很简洁,自己也喜欢折腾,就鼓捣了一个. 也在阿里云买了自己的域名,个人感觉在博客的样式和功能上花费了太多的时间,不过现在终 ...

  7. 微信【跳一跳】 opencv视觉识别 + 物理外挂

    视频连接:http://v.youku.com/v_show/id_XMzMyNDQxNTA0OA==.html?spm=a2h3j.8428770.3416059.1 初入门C++ 与 opencv ...

  8. 使用jemeter手工编写注册、登陆脚本 运用 fiddler (三)

    手工注册脚本的录制 我们可以发现  编写手工脚本 需要用到两个软件一起合作才能编写成功 工作亦是如此  养成良好的团队合作精神 是必不可少的 现在我们来看手工编写注册脚本 第一步 :我们先进入网站首页 ...

  9. 解析库-beautifulsoup模块

    # -*- coding: utf-8 -*- from bs4 import BeautifulSoup # 安装:pip install beautifulsoup4 # Beautiful So ...

  10. UESTC 1591 An easy problem A【线段树点更新裸题】

    An easy problem A Time Limit: 2000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others ...