四、决策树
4.1 DecisionTreeRegressor
DecisionTreeRegressor
是回归决策树,其原型为:class sklearn.tree.DecisionTreeRegressor(criterion='mse', splitter='best',
max_depth=None, min_samples_split=2, min_samples_leaf=1,
min_weight_fraction_leaf=0.0, max_features=None,random_state=None,
max_leaf_nodes=None, presort=False)
criterion
:一个字符串,指定切分质量的评价准则。默认为
'mse'
,且只支持该字符串,表示均方误差。splitter
:一个字符串,指定切分原则。可以为:'best'
:表示选择最优的切分。'random'
:表示随机切分。
max_features
:可以为整数、浮点、字符串或者None
,指定寻找最优拆分时考虑的特征数量。- 如果是整数,则每次切分只考虑
max_features
个特征。 - 如果是浮点数,则每次切分只考虑
max_features * n_features
个特征,max_features
指定了百分比。 - 如果是字符串
'sqrt'
,则max_features
等于sqrt(n_features)
。 - 如果是字符串
'log2'
,则max_features
等于log2(n_features)
。 - 如果是
None
或者'auto'
,则max_features
等于n_features
。
注意:如果已经考虑了
max_features
个特征,但是还没有找到一个有效的切分,那么还会继续寻找下一个特征,直到找到一个有效的切分为止。- 如果是整数,则每次切分只考虑
max_depth
:可以为整数或者None
,指定树的最大深度。如果为
None
,则表示树的深度不限。分裂子结点,直到每个叶子都是纯的(即:叶结点中所有样本点都属于一个类),或者叶结点中包含小于
min_samples_split
个样点。如果
max_leaf_nodes
参数非None
,则忽略此选项。
min_samples_split
:为整数,指定每个内部结点包含的最少的样本数。min_samples_leaf
:为整数,指定每个叶结点包含的最少的样本数。min_weight_fraction_leaf
:为浮点数,叶结点中样本的最小权重系数。max_leaf_nodes
:为整数或者None
,指定最大的叶结点数量。- 如果为
None
,此时叶结点数量不限。 - 如果非
None
,则max_depth
被忽略。
- 如果为
class_weight
:为一个字典、字符串'balanced'
、或者None
。它指定了分类的权重。- 如果为字典,则权重的形式为:
{class_label:weight}
。 - 如果为字符串
'balanced'
,则表示分类的权重是样本中各分类出现的频率的反比。 - 如果为
None
,则每个分类的权重都为1 。
注意:如果提供了
sample_weight
参数(由fit
方法提供),则这些权重都会乘以sample_weight
。- 如果为字典,则权重的形式为:
random_state
:指定随机数种子。presort
:一个布尔值,指定是否要提前排序数据从而加速寻找最优切分的过程。- 对于大数据集,设置为
True
会减慢总体的训练过程。 - 对于一个小数据集或者设定了最大深度的情况下,设置为
True
会加速训练过程。
- 对于大数据集,设置为
模型属性:
feature_importances_
:给出了特征的重要程度。该值越高,则该特征越重要。max_features_
:max_features
的推断值。n_features_
:当执行fit
之后,特征的数量。n_outputs_
:当执行fit
之后,输出的数量。tree_
:一个Tree
对象,即底层的决策树。
模型方法:
fit(X, y[, sample_weight, check_input, ...])
:训练模型。predict(X[, check_input])
:用模型进行预测,返回预测值。score(X,y[,sample_weight])
:返回模型的预测性能得分。
4.2 DecisionTreeClassifier
DecisionTreeClassifier
是分类决策树,其原型为:sklearn.tree.DecisionTreeClassifier(criterion='gini', splitter='best', max_depth=None,
min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0,
max_features=None,random_state=None, max_leaf_nodes=None, class_weight=None,
presort=False)
criterion
:一个字符串,指定切分质量的评价准则。可以为:'gini'
:表示切分时评价准则是Gini
系数'entropy'
:表示切分时评价准则是熵
- 其它参数参考
DecisionTreeRegressor
。
模型属性:
classes_
:分类的标签值。n_classes_
:给出了分类的数量。- 其它属性参考
DecisionTreeRegressor
。
模型方法:
fit(X, y[, sample_weight, check_input, ...])
:训练模型。predict(X[, check_input])
:用模型进行预测,返回预测值。predict_log_proba(X)
:返回一个数组,数组的元素依次是X
预测为各个类别的概率的对数值。predict_proba(X)
:返回一个数组,数组的元素依次是X
预测为各个类别的概率值。score(X,y[,sample_weight])
:返回模型的预测性能得分。
4.3 决策图
当训练完毕一棵决策树的时候,可以通过
sklearn.tree.export_graphviz(classifier,out_file)
来将决策树转化成Graphviz
格式的文件。这里要求安装
Graphviz
程序。Graphviz
是贝尔实验室开发的一个开源的工具包,用于绘制结构化的图形网络,支持多种格式输出如常用的图片格式、SVG、PDF格式等,且支持Linux\mid Windows
操作系统。然后通过
Graphviz
的dot
工具,在命令行中运行命令dot.exe -Tpdf F:\mid out -o F:\mid out.pdf
生成pdf
格式的决策图;或者执行dot.exe -Tpng F:\mid out -o F:\mid out.png
来生成png
格式的决策图。其中 :
-T
选项指定了输出文件的格式,-o
选项指定了输出文件名。