使用决策树算法对Iris数据构建决策树
一、导入类库
* 从sklearn中导入决策树模型,导入鸢尾花数据集
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris # 数据集
from sklearn import tree # 决策树
from sklearn.model_selection import train_test_split
二、加载鸢尾花数据集,并分割数据集
iris = load_iris()
X_train,X_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size = 0.20,random_state = 20)
X_train 划分出的训练集数据(返回值)
X_test 划分出的测试集数据(返回值)
y_train 划分出的训练集标签(返回值)
y_test 划分出的测试集标签(返回值)test_size:若在0~1之间,为测试集样本数目与原始样本数目之比;若为整数,则是测试集样本的数目。
test_size = 0.20 测试集占比0.20这里的random_state就是为了保证程序每次运行都分割一样的训练集和测试集。
否则,同样的算法模型在不同的训练集和测试集上的效果不一样。
https://www.jianshu.com/p/4deb2cb2502f
小贴士:
iris是一个字典,包含了数据、标签、标签名、数据描述等信息。可以通过键来索引对应的值
# 查看iris字典里的所有键
dir(iris)
['DESCR', 'data', 'feature_names', 'filename', 'target', 'target_names']
1、DESCR
# 鸢尾花数据集的描述说明信息
print(iris.DESCR)
:Number of Instances: 150 (50 in each of three classes):Number of Attributes: 4 numeric, predictive attributes and the class:Attribute Information: - sepal length in cm- sepal width in cm- petal length in cm- petal width in cm- class:- Iris-Setosa- Iris-Versicolour- Iris-Virginica:Summary Statistics:============== ==== ==== ======= ===== ====================Min Max Mean SD Class Correlation============== ==== ==== ======= ===== ====================sepal length: 4.3 7.9 5.84 0.83 0.7826sepal width: 2.0 4.4 3.05 0.43 -0.4194petal length: 1.0 6.9 3.76 1.76 0.9490 (high!)petal width: 0.1 2.5 1.20 0.76 0.9565 (high!)============== ==== ==== ======= ===== ====================
2、data
150个数据,每个数据都有四个维度的特征,每个特征都是连续数值
iris.data
array([[5.1, 3.5, 1.4, 0.2],
[6.5, 3. , 5.2, 2. ],
.......[6.2, 3.4, 5.4, 2.3],
[5.9, 3. , 5.1, 1.8]])
3、feature_names
四个特征的列名 分别是:花萼长度,花萼宽度、花瓣长度、花瓣宽度
['sepal length (cm)','sepal width (cm)','petal length (cm)','petal width (cm)']
iris.feature_names
4、iris.filename
'D:\\anaconda\\lib\\site-packages\\sklearn\\datasets\\data\\iris.csv'
5、target
标签0,1,2对应三种不同的鸢尾花
iris.target
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
6、 target_names
'setosa', 'versicolor', 'virginica'对应3种鸢尾花名字
iris.target_names
array(['setosa', 'versicolor', 'virginica'], dtype='<U10')
三、构建并训练决策树模型
clf = tree.DecisionTreeClassifier() # 决策树分类器
# criterion 默认为‘gini’
clf = clf.fit(X_train,y_train)
四、绘制决策树模型并进行数据预测
plt.figure(dpi=200)
# feature_names=iris.feature_names设置决策树中显示的特征名称
tree.plot_tree(clf,feature_names=iris.feature_names,class_names=iris.target_names)
花瓣长度 <= 2.6 -->class = setosa
假如有一朵新的鸢尾花,四个特征分别为6,5,5,2。用训练好的决策树判断他是属于哪一类鸢尾花?
1、
print('数据[6 5 5 2]data类别:',clf.predict([[6,5,5,2]]))
数据[6 5 5 2]data类别: [2]
2、
print('测试集的标签:\n',y_test)
[0 1 1 2 1 1 2 0 2 0 2 1 2 0 0 2 0 1 2 1 1 2 2 0 1 1 1 0 2 2]
3、
print('模型的准确率为:','{0:.3f}'.format(clf.score(X_test,y_test)))
模型的准确率为: 0.933
小收获:
import numpy as np
a1 = np.array([[6,5,5,2],[1,2,3,4]]) # (2, 4)
print(a1)a2 = np.array([6,5,5,2])
print(a2) # [6 5 5 2]
a2.shape # (4,)a3 = a2.reshape(1,4)
print(a3.shape) # (1, 4)
print(a3) # [[6 5 5 2]]
五、代码:
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris # 数据集
from sklearn import tree # 决策树
from sklearn.model_selection import train_test_splitiris = load_iris()
X_train,X_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size = 0.20,random_state = 20)clf = tree.DecisionTreeClassifier() # 决策树分类器
clf = clf.fit(X_train,y_train)plt.figure(dpi=200)
tree.plot_tree(clf,feature_names=iris.feature_names,class_names=iris.target_names)print('数据[6 5 5 2]data类别:',clf.predict([[6,5,5,2]]))
使用决策树算法对Iris数据构建决策树相关推荐
- 决策树算法(六)——构建决策树
写在前面的话 我就是一俗人.我俗我开心. 递归构建决策树 之前我们已经学习了怎么根据信息论的方法,把一个数据集从杂乱无章的数据集中划分出来,我们使用信息论来构建决策树一级一级分类的方法就是一个递归的过 ...
- 【决策树】深入浅出讲解决策树算法(原理、构建)
本文收录于<深入浅出讲解自然语言处理>专栏,此专栏聚焦于自然语言处理领域的各大经典算法,将持续更新,欢迎大家订阅! 个人主页:有梦想的程序星空 个人介绍:小编是人工智能领域硕士,全栈工 ...
- 【机器学习入门】(5) 决策树算法实战:sklearn实现决策树,实例应用(沉船幸存者预测)附python完整代码及数据集
各位同学好,今天和大家分享一下python机器学习中的决策树算法,在上一节中我介绍了决策树算法的基本原理,这一节,我将通过实例应用带大家进一步认识这个算法.文末有完整代码和数据集,需要的自取.那我们开 ...
- 决策树算法(二)——构建数据集
目录索引 目录索引 写在前面的话 决策树构建的一般流程 数据的构建 参考链接 写在后面的话 写在前面的话 如果您有任何地方看不懂的,那一定是我写的不好,请您告诉我,我会争取写的更加简单易懂! 如果您有 ...
- 【数据挖掘】决策树算法简介 ( 决策树模型 | 模型示例 | 决策树算法性能要求 | 递归创建决策树 | 树根属性选择 )
文章目录 I . 决策树模型 II . 决策树模型 示例 III . 决策树算法列举 IV . 决策树算法 示例 V . 决策树算法性能要求 VI . 决策树模型创建 ( 递归创建决策树 ) VII ...
- 【机器学习入门】(4) 决策树算法理论:算法原理、信息熵、信息增益、预剪枝、后剪枝、算法选择
各位同学好,今天我向大家介绍一下python机器学习中的决策树算法的基本原理.内容主要有: (1) 概念理解:(2) 信息熵:(3) 信息增益:(4) 算法选择:(5) 预剪枝和后剪枝. python ...
- 决策树算法(一)——一些重要的数学概念
写在前面的话 趁着现在我还是高中数理化老师,偶尔兼职英语老师的时候赶紧抓紧时间写点有关计算机科学技术的东西.一来是表示我对计算机的热爱,二来,当然是最重要的咯,满足一下我强大的虚荣心.哈哈哈哈!想想高 ...
- 机器学习之决策树算法前期(创建、分类及展示)
一.什么是决策树? 决策树算法是一种逼近离散函数值的方法.它是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析.本质上决策树是通过一系列规则对数 ...
- 机器学习3决策树算法模型
决策树算法模型 1.什么是决策树? 2.决策树的归纳 2.1 (选择分裂特征)特征的选择 2.2 决策树的生成 2.2.1 ID3 算法 2.2.2 C4.5 算法 2.2.3 Card算法 2.2 ...
- 【机器学习】这份分类决策树算法介绍请收好!
摘要: 决策树在机器学习算法中是一个相对简单的算法,如何不能进行适当的剪枝就容易造成模型的过拟合.决策树算法也是当前很多集成学习算法的基础,集成算法的效果往往比单独使用决策树算法效果更好. 关键词: ...
最新文章
- GTK+, Qt, wxWidgets compare
- 基于macos的Homebrew常用命令和使用教程(你得看❤️)
- python获取excel某一列-Python从Excel中读取日期一列的方法
- smarty访问数组中的数据,如果是关联数组直接用点.
- 将CSDN600W用户及密码帐号存入本地MySql数据库
- 1110: 最近共同祖先(函数专题)
- ruby 将字符串转为数组_Ruby程序将数组打印为字符串
- A. Computer Game(纯模拟)
- leetcode5086:smallest-subsequence-of-distinct-characters
- python入门指南by-Python 入门指南
- 贪心法—— LeetCode45 跳跃游戏II(跳跃游戏进阶版)
- 如何画圆柱_木饰面、金属包立柱,该如何设计?
- 什么是社会融资规模,M0、M1、M2?
- 时区缩写与UTC(GMT)时差对照表
- Mac制作windows10安装U盘
- 第六章-博弈论之Stackelberg博弈
- 混合现实:地面高度不准确
- 汽车行业大数据解决方案的应用案例详细分析
- 使用python基于socket的tcp服务器聊天室
- index ffs、index fs原理考究-1109