SKlearn

Sklearn简述

scikit-learn , 又写作 sklearn ,是一个开源的基于python语言的机器学习工具包,它通过 NumPy, SciOy 和 Matplotlib 等 Python 数值计算库实现搞笑的算法应用,并涵盖了几乎所有的主流机器学习算法。

http://scikit-learn.org/stable/index.html

实际工程应用中,Python 手写代码实现算法耗时耗力,要求过高,sklearn 开源帮助我们,调用 API,实现算法,我们只需要 分析采集数据,根据数据选择合适算法,在工具包中调用算法,调整算法参数,获取所需信息。

决策树

1、概述

1.1 基本概念和解决问题

决策树(Decison Tree)是一种非参数的有监督学习方法,它能够从一系列有特征和标签的数据中总结出决策规则,并利用树状图的结构来呈现这些规则,以解决分类和回归问题。 决策树算法易于理解,适用于各种数据, 在解决各种问题时,均有良好表现。

在树中:(以分类树为例)
在这里插入图片描述
最上方的问题节点叫做根节点,在得到结论前的每个阶段都是中间节点,得到的每一个结论(类别:class ) 叫做叶子节点。

根节点: 只有出边,无进边,包含最初的,针对特征的提问。
中间节点:既有进边,也有出边,进边仅有一条,出边可有多条,都是针对特征的提问。
叶子节点:只有进边,无出,每个叶子节点都是一个类别标签。
子节点与父节点 : 在两个相连的节点中,更接近根节点的是父节点,另一个是子节点。

决策树中,算法核心解决两个问题:
1)如何从数据汇表中找出最佳节点和最佳分枝
2)如何让决策树停止生长(防止过拟合)

1.2 sklearn 中决策树

  • 模块 sklearn.tree

sklearn 中鄋的决策树的类都在 tree 这个模块下

tree描述
tree.DecisionTreeClassifier分类树
tree.DecisionTreeRegressor回归树
tree.export_graphviz将生成的决策树导出为 DOT 格式,画图专用
tree.ExraTreeClassifier高随机版本的 分类树
tree.ExtraTreeRegressor高随机版本的 回归树
  • sklearn 建模基本流程
  1. 实例化 决策树 模型
  2. 通过模型接口,训练模型
  3. 导入测试集,从模型接口中 提取信息
from sklearn import tree                     # 导入模块

clf = tree.DecisionTreeClassifier()          # 实例化 决策树
clf = clf.fit(X_train, Y_train)              # 输入训练集,训练模型
											 # X 为数据,Y 为分类结果
result = clf.score(X_test, Y_test)           # 导入测试集,输出测试分数

2. DecisionTreeClassifier 分类树

2.1 重要参数

2.1.1 criterion

为了将表格转化为一棵树,决策树需要找出最佳节点和最佳分枝方法,对分类树而言,衡量此 “最佳” 的指标成为 “不纯度”。 不纯度越低,决策树对训练集的拟合效果越好。现在使用的决策树宣发,在分枝方法上的核心大多围绕某个不纯度相关指标优化上。

不纯度基于节点计算,树中每个节点均会有一个不纯度,且子节点的不纯度一定低于父节点,在同一棵决策树上,叶子节点的不纯度一定最低。

criterion 参数规定计算不纯度的方法。

  1. “entropy” 使用 信息熵(Entropy)
  2. “gini” 使用 基尼系数(Gini impurity)

在这里插入图片描述

t 代表给定节点,i 代表标签的任意一种分类,p(i|t) 代表 标签分类 i 在 t 节点上,所占比例。
当使用 “entropy” 信息熵时,sklearn 实际计算为 基于信息熵的信息增益 : 父节点信息熵与子节点信息熵之差。

比起基尼系数,信息熵对不纯度更加敏感,对不纯度惩罚最强。但在 实际使用中,信息熵和基尼系数效果基本相同。
由于存在对数,信息熵的计算比基尼系数缓慢。 另外,由于信息熵对不纯度更加敏感,所以使用信息熵作为指标时,决策树的生长会更加 “精细” —— 对于高位度数据或者噪音极多的数据,信息熵易发生过拟合,基尼系数在此情况下,效果较为良好。但是,当模型在训练集和测试集上,均表现较差时,即:拟合程度不足时,一般常用信息熵。
当然,具体情况,具体分析

2.1.2 建立树:

from sklearn import tree      # 导入树
from sklearn.datasets import load_wine    # 导入 sklearn 自带的红酒数据集
from sklearn.medel_selection import train_test_split    # 导入训练集和测试集分类模块



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值