2014-12-23 4 views
2

랜덤 포레스트를 사용하여 분류 문제를 해결하고 있습니다. BOW로 문장을 num로 변환하고 레이블을 넣고 트리를 만들었습니다.ValueError : scikit에 의한 임의의 포리스트 분류 learn

data_train = [[1.0, 1.0], [2.0, 2.0]] 

label_train = [1,2] 

estimator = RandomForestClassifier() 

estimator.fit_transform(data_train, label_train) 

및 예측을 시도하는 문장 인 test_data를 준비했습니다. 그러나 작동하지 않았습니다. 내가 아는

test_data = [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]] 

label_predict = estimator.predict_proba(test_data) 


ValueError: Number of features of the model must match the input. Model n_features is 2 and input n_features is 12 

그것은, 내가이 think.How를 해결해야 요소의 수, 그것은 다른 달라야하는 문장에서 단어의 수를 해독제하지 않습니다라고? 당신의 예에서

답변

1

는 기차 데이터는 두 가지 기능/크기/열 (행의 수는이 문제에 대한 무관)이 있습니다

[[1.0, 1.0], 
[2.0, 2.0]] 

을 당신은 행/샘플의 각각의 레이블이있다.

[1, 
2] 

테스트 데이터는 유사해야합니다. 즉, 동일한 피쳐 수/치수/열 수를 가져야합니다. 예를 들면 다음과 같습니다.

[[1.0, 1.0], 
[1.0, 1.0], 
[1.0, 1.0], 
[1.0, 1.0], 
[1.0, 1.0], 
[1.0, 1.0]] 

다른 행 수는 있지만 열 수는 동일해야합니다. 이 경우 2 열 6 행을 가지므로 predict_proba의 결과로 6 개의 레이블이 생성됩니다.

+0

감사합니다. 그래서 데이터의 의미를 바꾸지 않고 두 개의 열을 test_data로 만들어야합니다. (또는 train_data를 변경하십시오.) – user3119018

+0

예, 대부분 각 열은 열차와 테스트 데이터에서 모두 같은 것을 나타냅니다. – elyase

관련 문제