[英]Understanding scikit's decision tree - inconsistent learning
我一直在使用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的地方每次返回两个级别的决策树。
该行的输出是随机的:
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)
这样做应该为树提供相同的拆分功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.