了解scikit的决策树 - 不一致的学习

时间:2016-12-02 17:26:30

标签: python scikit-learn decision-tree

我一直在使用包tsfresh来查找时间序列的相关功能。它输出大约300"相关"为每个要素提供可预测性的p检验阈值的功能。当我使用scikit DecisionTreeClassifier()训练分类器时,我得到一些奇怪的结果。每次我执行树的学习时,它返回一个只有两个级别的树,每次它使用的功能都不同。我很困惑。树每次都做得很好但是我没有看到所有的水平? 使用此代码:

from sklearn import tree
from sklearn.tree import _tree
X_train, X_test, y_train, y_test = train_test_split(X_filtered, y, test_size=.2)
cl = DecisionTreeClassifier()
cl.fit(X_train, y_train)
tree.export_graphviz(cl,out_file='tree.dot',feature_names=X.columns)

其中len(X.colums)超过300,每次返回两个级别的决策树。

1 个答案:

答案 0 :(得分:0)

此行的输出是随机的:

X_train, X_test, y_train, y_test = train_test_split(X_filtered, y, test_size=.2)

也就是说,每次在训练集和测试集中分割数据时,都会得到不同的集合。您可以使用random_state属性获取可预测的拆分:

X_train, X_test, y_train, y_test = train_test_split(X_filtered, y, test_size=.2, random_state=4)

这样做应该为树提供相同的分割功能。