sklearn之决策树简介
第一次写博客,这里就写一下最近在学习的,易快速上手的sklearn吧。
sklearn入门
scikit-learn,又写作sklearn,是一个开源的基于python语言的机器学习工具包。它通过NumPy, SciPy和Matplotlib等python库实现高效的算法应用,并且涵盖了几乎所有主流机器学习算法。本篇主要介绍决策树。
决策树
决策树是一种有监督学习,从一系列有数据特征和标签的数据中每次选择某一特征来作为划分依据,也就是树的节点,来划分数据。依次进行直到将数据分类完成,最后呈现出树状结构。决策树算法易理解,在行业中广泛应用。
- 常用决策树算法:
- ID3算法-----计算每一个特征的**信息增益(熵差)**决定分枝节点。
- C4.5算法 -----信息增益率
- CART算法-----Gini系数
- GBDT梯度提升
sklearn中的决策树
-
决策树中的类都封装在sklearn.tree模块下
常用类 含义 tree.DecisionTreeClassifier 分类树 tree.DecisionTreeRegressor 回归树 tree.export_graphviz 将决策树画出来 -
怎样建树
- 准备数据集
from sklearn.tree import DecisionTreeclassifier
from sklearn.model_selection import train_test_classifier
from sklearn.daatasets import load_wine //这里用了红酒的数据集
from sklearn.model_selection import train_test_classifier
X = load_wine().data
y=data.data,data.target
Xtrain, Xtest, Ytrain,Ytest = train_test_classifier(X,y,test_size = 0.3) //test_size按比例划分
- 实例化模型,将数据导入训练模型
dtf = DecisonTreeClassier(criterion = "entroph")
dtf = dtf.fit(Xtrain,ytrian) //开始训练
- 通过模型接口调用相关属性和方法
predict = dtf.predict(Xtest) //返回预测结果
score = dtf.score(Xtest,ytest) //查看模型预测的准确度
dtf.feature_importances_ //每一个特征的名字
dtf.feature_importances_ //每一个特征的重要性
DecisionTreeClassifier
重要参数
- criterion
- "entropy" -----信息熵(以信息熵为选择标准,选择信息熵差值最高的特征作为节点进行分枝。(信息熵是一个重要概念)
- “gini" ------基尼系数
- random_state
值为数值型,用来设置随机模式的参数,可以让模型稳定下来。
剪枝
决策树最大的一个特点就是容易过拟合(树深度很深,划分过于精细)为了解决这一问题,就需要进行剪枝。
- 剪枝参数
- max_depth-----限制树的最大深度
- min_samples_leaf-----限定一个节点在分枝后每个子节点必须至少包含min_samples_leaf个样本
- min_samples_spilt----一个节点必须包含min_samples_spilt个样本才可以被分枝。
决策树中的集成算法
简单来说,集成算法就是从一组数据中建不同的树,这样训练出来的模型比单个树更优。
常用集成算法有: 随机森林、Adaboost、GBDT、XGBoost(XGBoost是一个专门的算法库,当然sklearn里也有关于XGBoost的类)。