2016-12-02 1 views
1

나는 tsfresh 패키지를 사용하여 시계열 관련 기능을 찾았습니다. 각 기능에 대한 예측 가능성에 대한 p- 테스트 임계 값을 통과하는 약 300 개의 "관련"기능을 출력합니다. scikit의 DecisionTreeClassifier()을 사용하여 분류기를 훈련하면 이상한 결과가납니다. 트리의 학습을 실행할 때마다 트리가 2 단계 만 반환되며 사용되는 기능이 다를 때마다 트리가 반환됩니다. 나는 어리둥절 해한다. 나무는 매번 좋은 일을하지만 모든 레벨을 보지 못합니까?scikit의 의사 결정 트리에 대한 이해 - 일관성없는 학습

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

이 라인의 출력은 랜덤 :

입니다
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) 

같은 분할 트리 항상 기능을 제공해야합니다.

+0

이것은 도움이되었지만 궁금한 점은'DecisionTreeClassifier' 클래스에 있습니다. 다른 기능을 반환합니다. 큰 테스트 세트가있어서 무슨 일이 일어나고 있는지 잘 모르겠습니다. – superhero

+0

다른 훈련 세트가있을 때마다 선택한 여러 가지 기능을 사용할 수 있습니다. 내가 말한 것처럼'random_state'를 설정하려고 했습니까? – dukebody

+0

예,'random_state'를 사용하면 같은 상태가되지만 그 수입은 격렬합니다. – superhero

관련 문제