四、决策树

4.1 DecisionTreeRegressor

  1. DecisionTreeRegressor 是回归决策树,其原型为:

    1. class sklearn.tree.DecisionTreeRegressor(criterion='mse', splitter='best',
    2. max_depth=None, min_samples_split=2, min_samples_leaf=1,
    3. min_weight_fraction_leaf=0.0, max_features=None,random_state=None,
    4. 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 会加速训练过程。
  2. 模型属性:

    • feature_importances_:给出了特征的重要程度。该值越高,则该特征越重要。
    • max_features_max_features的推断值。
    • n_features_:当执行fit之后,特征的数量。
    • n_outputs_:当执行fit之后,输出的数量。
    • tree_:一个 Tree对象,即底层的决策树。
  3. 模型方法:

    • fit(X, y[, sample_weight, check_input, ...]):训练模型。
    • predict(X[, check_input]):用模型进行预测,返回预测值。
    • score(X,y[,sample_weight]):返回模型的预测性能得分。

4.2 DecisionTreeClassifier

  1. DecisionTreeClassifier 是分类决策树,其原型为:

    1. sklearn.tree.DecisionTreeClassifier(criterion='gini', splitter='best', max_depth=None,
    2. min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0,
    3. max_features=None,random_state=None, max_leaf_nodes=None, class_weight=None,
    4. presort=False)
    • criterion:一个字符串,指定切分质量的评价准则。可以为:

      • 'gini':表示切分时评价准则是Gini系数
      • 'entropy':表示切分时评价准则是熵
    • 其它参数参考 DecisionTreeRegressor
  2. 模型属性:

    • classes_:分类的标签值。
    • n_classes_:给出了分类的数量。
    • 其它属性参考 DecisionTreeRegressor
  3. 模型方法:

    • 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 决策图

  1. 当训练完毕一棵决策树的时候,可以通过sklearn.tree.export_graphviz(classifier,out_file)来将决策树转化成Graphviz格式的文件。

    这里要求安装Graphviz程序。Graphviz是贝尔实验室开发的一个开源的工具包,用于绘制结构化的图形网络,支持多种格式输出如常用的图片格式、SVG、PDF格式等,且支持Linux\mid Windows操作系统。

  2. 然后通过Graphvizdot工具,在命令行中运行命令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选项指定了输出文件名。

    Decision_Graph