一、首先,机器学习建模的基本流程分为3步

①实例化(也就是建立模型对象

②传入训练集和测试集,训练模型

③通过模型接口提取需要的信息

那么分类树的基本代码是:

from sklearn import tree                #导入需要的模块
clf = tree.DecisionTreeClassifier()     #实例化,也就是建立模型对象
clf = clf.fit(X_train,y_train)          #用训练集数据训练模型,使用的接口是fit#英文中fit的意思是“拟合、适合”
result = clf.score(X_test,y_test)       #导入测试集,由接口score得到模型的得分

二、那么DecisionTreeClassifier()有哪些重要的参数呢,大概有8个重要(用得到的)参数:

criterion,用来决定不纯度的计算方法,可选项有两个为:entropy(信息熵)、gini(基尼系数);在实际使用中,信息熵和基尼系数的效果基本相同。

参数
criterion
如何影响模型?
确定不纯度的计算方法,帮忙找出最佳节点和最佳分枝,不纯度越低,决策树对训练集的拟合越好
可能的输入有哪些?
不填默认基尼系数,填写 gini 使用基尼系数,填写 entropy 使用信息增益。填的时候要加双引号或单引号。
怎么选取参数?
通常就使用基尼系数
数据维度很大,噪音很大时使用基尼系数
维度低,数据比较清晰的时候,信息熵和基尼系数没区别
当决策树的拟合程度不够的时候,使用信息熵
两个都试试,不好就换另外一个

random_state,设置随机数种子,使得你的结果可以被别人复现。

splitter,这个参数可以用来防止过拟合,选项可选best、random,输入”best",决策树在分枝时虽然随机,但是还是会优先选择更重要的特征进行分枝(重要性可以通过属性feature_importances_查看),输入“random",决策树在分枝时会更加随机,树会因为含有更多的不必要信息而更深更大,并因这些不必要信息而降低对训练集的拟合。

max_depth,限制树的最大深度,超过设定深度的树枝全部剪掉 。

min_samples_split,一个节点必须要包含至少min_samples_split个训练样本,这个节点才允许被分枝,否则 分枝就不会发生。

min_samples_leaf,一个节点在分枝后的每个子节点都必须包含至少min_samples_leaf个训练样本,否则分枝就不会发生。或者理解为所有的叶子结点必须至少包含min_samples_split个训练样本。

max_feature,限制分枝时考虑的特征个数,超过限制个数的特征都会被舍弃。和max_depth异曲同工。

min_impurity_decrease,限制信息增益的大小,信息增益小于设定数值的分枝不会发生。这是在0.19版本中更新的 功能,在0.19版本之前时使用min_impurity_split。

三、认识一个重要的属性

        feature_importances_:能够查看各个特征对模型的重要性。

四、认识四个重要接口

        ①fit:用于将训练集传入模型

        ②score :用于得出分类决策树的得分(评分)

注:的fit和score,几乎对每个算法(模型)都可以使用。

        ③apply :中输入测试集返回每个测试样本所在的叶子节点的索引。

        ④predict:输入测试集返回每个测试样本的标签。

下面来实际建立一棵分类决策树:

# 以下代码运行环境:jupyter lab 或 jupyter notebppk
# 导入需要的模块
from sklearn import tree
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
import pandas as pd# 使用自带的数据集——红酒wine
wine = load_wine()# 可以看看这份数据的大致样子
wine.data.shape
wine.target#如果wine是一张表,应该长这样:
pd.concat([pd.DataFrame(wine.data),pd.DataFrame(wine.target)],axis=1)# 查看一下数据中用于分类的数据——“特征名”,以及我们的分类结果“目标名”
wine.feature_names
wine.target_names# 设置训练集和测试集
# train_test_split用于划分测试集和训练集
# 0.3表示30%的数据做测试集,剩下的70%做训练集
Xtrain , Xtest , Ytrain , Ytest = train_test_split(wine.data , wine.target , test_size=0.3)  # 我们来查看一下相关数据的形状
Xtrain.shape
Xtest.shape##################
#下面开始建立模型,三部曲:实例化、训练模型、查看模型得分
##################
clf = tree.DecisionTreeClassifier(criterion="entropy")   #建立模型对象
clf = clf.fit(Xtrain, Ytrain)                            #传入训练数据
score = clf.score(Xtest, Ytest)                          #返回预测的准确度,也就是模型的评分
score# 下面将训练好的这棵树画出来
# 导入画决策树需要的库graphviz
import graphviz# 定义目标分类的标签(中文名)
feature_name = ['酒精','苹果酸','灰','灰的碱性','镁','总酚','类黄酮','非黄烷类酚类','花青素','颜色强度','色调','od280/od315稀释葡萄酒','脯氨酸']# 画出决策树
dot_data = tree.export_graphviz(clf                                       # 训练好的模型,out_file=None,feature_names = feature_name             # 特征的名字,class_names =["琴酒","雪莉","贝尔摩德"]   # 标签的名字,filled=True                              # 给节点填充不同的颜色,rounded=True                             # 是否圆滑的框,random_state=25                          # 设置随机数种子,使得你的结果可以被别人复现,splitter='best'                          # 见上文解析#              ,min_impurity_decrease                  # 限制信息增益的大小,信息增益小于设定数值的分枝不会发生)
graph = graphviz.Source(dot_data)      # 把刚刚画好的树导出graph

最后,我们来总结一下:

1、建立分类决策树三部曲:实例化、训练模型、评估模型

2、八个重要参数:Criterion,random_state,splitter,max_depth,min_samples_split,min_samples_leaf,max_feature,min_impurity_decrease

3、一个重要属性:feature_importances_

4、四个接口:fifit,score,apply,predict

机器学习第1集——分类决策树tree.DecisionTreeClassifier()相关推荐

  1. sklearn机器学习:决策树tree.DecisionTreeClassifier()

    sklearn中的决策树分类器 sklearn中的决策树分类器函数,格式如下: sklearn.tree.DecisionTreeClassifier(criterion='gini', splitt ...

  2. [机器学习与scikit-learn-15]:算法-决策树-分类问题代码详解

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址: 目录 第1章 scikit-learn对决策树的支持 1.1 决策树的基本原理 1.2 决策树的 ...

  3. 【机器学习】07. 决策树模型DecisionTreeClassifier(代码注释,思路推导)

    目录 资源下载 实现思路与核心函数解读 DecisionTreeClassifier分类决策树 tree.plot_tree决策树可视化 1. 对决策树最大深度的研究与可视化 绘图结果 分析 2. 对 ...

  4. 【sklearn】1.分类决策树

    前言 决策树是机器学习中的一种常用算法.相关数学理论我也曾在数学建模专栏中数学建模学习笔记(二十五)决策树 介绍过,本篇博文不注重相关数学原理,主要注重使用sklearn实现分类树的效果. 参考课程见 ...

  5. 实验三:CART分类决策树python实现(两个测试集)(一)|机器学习

    目录 python实现 分步 源代码(全部) 测试集1(鸢尾花集) 测试集2(红酒品类数据集) 总结 python实现 分步 划分数据子集(注意区分离散特征值和连续特征值) #获取数据子集,分类与回归 ...

  6. python决策树怎么选择_【机器学习+python(8)】分类决策树的介绍与实现

    之前我们介绍过用逻辑回归根据鸢尾花萼片.花瓣的长度和宽度进行鸢尾花类别的判定:也通过朴素贝叶斯模型分享了如何根据男生专业和身高两大属性,判断其是否有女朋友.而本期我们将介绍另外一种有监督的机器学习分类 ...

  7. 【机器学习】监督学习--(分类)决策树②

    注:数据集在文章末尾 (1)决策树–线性二分类 import matplotlib.pyplot as plt import numpy as np from sklearn.metrics impo ...

  8. 机器学习之分类决策树与回归决策树—基于python实现

    大家好,我是带我去滑雪! 本期为大家介绍决策树算法,它一种基学习器,广泛应用于集成学习,用于大幅度提高模型的预测准确率.决策树在分区域时,会考虑特征向量对响应变量的影响,且每次仅使用一个分裂变量,这使 ...

  9. [机器学习笔记] (四)决策树 Decision Tree

    (四)决策树 Decision Tree 基本概念 决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性 ...

最新文章

  1. 说说Broker服务节点、Queue队列、Exchange交换器?
  2. CDK上安装kube-dashboard
  3. (42)Verilog HDL 打两拍设计
  4. win8普通版连接远程桌面---RDPWrap
  5. Mac桌面动态壁纸Dynamic Wallpaper for Mac
  6. 浏览器字体变大|变小怎么办,浏览器字体大小设置方法
  7. 市面上4.4V截止电压的锂电充电IC有哪些呢
  8. android自动播放音乐代码,Android MediaPlayer实现音乐播放器实例代码
  9. Prince和学生们2
  10. 数字通信调制方式的误码率matlab仿真,包括OOK,PRK,FSK以及QAM
  11. Docker 使用OpenJDK 验证码无法显示
  12. 《50个教育法:我把三个儿子送入了斯坦福》书中的精髓:了解教育的本质,以言传身教、耐心引导的教育方式培养孩子成才。
  13. 烤仔的朋友们 | 手把手教你掌握 DeFi 隐私保护实用技巧
  14. 用C++评选优秀教师和优秀学生
  15. input输入字符限制
  16. 地图白化function
  17. [渝粤教育] 山东财经大学 数据库原理及应用 参考 资料
  18. week4 day3/4 常用模块
  19. C++项目 - 负载均衡OJ - 1 - 项目概述
  20. 工作几年,涨薪4K遭拒,后一天我就裸辞走了···

热门文章

  1. php域名解析查询系统网页版
  2. Android SQLIte 介绍 及 导入db文件到app的/data目录时手机需要root
  3. hive中order by详解
  4. buuctf-babyfengshui_33c3_2016
  5. SiTime硅晶振的弹性
  6. 南邮《离散数学》2018-2019学年第一学期期末考试回忆
  7. CVPR 2020 论文大盘点-动作识别篇
  8. Kinect简单的动作识别
  9. 键盘事件keydown()与keyup()
  10. python批量修改excel数据_/python批量修改excel工作薄