sklearn中的决策树模型,不仅可以处理分类问题,也可以处理回归问题。
sklearn的tree模块,提供了一个BaseDecisionTree的决策树基类。这个类不能直接使用,派生了DecisionTreeClassifier 、DecisionTreeRegressor 。这两个类分别处理分类和回归问题。
DecisionTreeClassifier 决策树分类器的类定义文档
class DecisionTreeClassifier(ClassifierMixin, BaseDecisionTree): Parameters ---------- criterion : {"gini", "entropy"}, default="gini" splitter : {"best", "random"}, default="best" max_depth : int, default=None min_samples_split : int or float, default=2 min_samples_leaf : int or float, default=1 min_weight_fraction_leaf : float, default=0.0 max_features : int, float or {"auto", "sqrt", "log2"}, default=None random_state : int, RandomState instance, default=None max_leaf_nodes : int, default=None min_impurity_decrease : float, default=0.0 min_impurity_split : float, default=0 class_weight : dict, list of dict or "balanced", default=None presort : deprecated, default='deprecated' ccp_alpha : non-negative float, default=0.0 Attributes ---------- classes_ : ndarray of shape (n_classes,) or list of ndarray feature_importances_ : ndarray of shape (n_features,) max_features_ : int n_classes_ : int or list of int n_features_ : int n_outputs_ : int tree_ : Tree
sklearn的决策树DecisionTreeClassifier的默认初始化参数

DecisionTreeClassifier决策树分类器-参数详解
criterion :特征选择标准,默认是gini,可以设置为entropy
criterion : {"gini", "entropy"}, default="gini" The function to measure the quality of a split. Supported criteria are "gini" for the Gini impurity and "entropy" for the information gain.
在传统的机器学习中,决策树模型的不同实现方式,如ID3,C4.5,CART等,主要的区别在于特征的选择上,计算特征的标准不一样,如信息熵、信息增益、信息增益率、基尼系数等。不同的计算方式,都有相应的适用范围。
splitter:特征划分点选择标准,默认是best,可以设置为random
splitter : {"best", "random"}, default="best" The strategy used to choose the split at each node. Supported strategies are "best" to choose the best split and "random" to choose the best random split.
直接百度翻译 : 用于在每个节点上选择拆分的策略。支持策略是“最佳”选择最佳分割和“随机”选择最好的随机分割。
一般情况下best足够使用。当数据集的维度过多时,可以使用random,通过随机性来降低过拟合。如果维度少,只有几个特征时,参数可以不用设置,使用默认即可。
维度一般时,可以通过打印决策树模型,来看不同设置上,对树的影响。
best参数是根据算法选择最佳的切分特征,例如gini、entropy。random随机的在部分划分点中找局部最优的划分点。默认的”best”适合样本量不大的时候,而如果样本数据量非常大,此时决策树构建推荐”random”。
剪枝参数:max_depth,max_features,min_samples_split,min_weight_fraction_leaf ,max_leaf_nodes,min_impurity_split
当决策树模型过于庞大时,可以通过剪枝策略,减少树枝的深度,来提高模型的泛化能力,防止过拟合。
具体的参数需要根据数据集特征的具体情况而定。主要方式就是 最大特征数max_features,最大深度max_depth,节点的最小样本数min_samples_split,叶子节点最小的样本权重和min_weight_fraction_leaf,最大叶子节点数max_leaf_nodes,节点划分最小不纯度min_impurity_split
max_depth最大深度:限制决策树的层级。需要结合数据特征维度和复杂度而定。
min_samples_split:内部节点再划分所需最小样本数,可选参数。当设置为整数时,分到最小节点的样本数量低于设置值时,就停止分割。当设置为浮点数时,就是样本低于多少比例时停止分隔。
DecisionTreeClassifier决策树分类器的-属性详解

classes_ : 类标签,根据实际问题,输出是单值或者列表
feature_importances_ : 返回特征值的重要性
max_features_ : 树的最大深度
n_classes_ : 类别的数量
n_features_ : fit时选取的特征数量
tree_ : 树的基础结构