我一直在使用包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,每次返回两个级别的决策树。
答案 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)
这样做应该为树提供相同的分割功能。