2015-02-01 1 views
0

특성 벡터로 저장된 일련의 데이터에 대해 python 및 scikit-learn을 사용하여 임의의 포리스트 분류자를 훈련 (적합)하려고합니다. 데이터를 읽을 수는 있지만 Value Erros 때문에 분류 자의 교육을 실행할 수 없습니다.Scikit-learn의 값 오류 랜덤 포리스트 적합 방법

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/usr/lib/python2.7/dist-packages/sklearn/ensemble/forest.py", line 260, in fit 
n_samples, self.n_features_ = X.shape 
ValueError: need more than 1 value to unpack 

csv로-data.txt로는, 3996 개 벡터를 쉼표로 구분 된 값 파일이 포함됩니다 :

from sklearn.ensemble import RandomForestClassifier 
from numpy import genfromtxt 

my_training_data = genfromtxt('csv-data.txt', delimiter=',') 

X_train = my_training_data[:,0] 
Y_train = my_training_data[:,1:my_training_data.shape[1]] 

clf = RandomForestClassifier(n_estimators=50) 
clf = clf.fit(X_train.tolist(), Y_train.tolist()) 

오류가 나에게 돌아은 다음과 같다 : 내가 사용하고 소스 코드는 다음과 같다 분류 자 훈련 용. 나는 첫 번째 차원 f 을 사용하여 벡터에 레이블을 지정하고 나머지는 float 값입니다. 이것들은 분류 자에서 사용 된 특징 벡터들의 차원들이다.

여기에 몇 가지 변환이 누락 되었습니까?

+0

교육용 텍스트 파일의 각 행에있는 첫 번째 숫자가 레이블 인 경우 'X_train' 및'Y_train '을 바꿔서는 안됩니까? –

답변

3

학습 예제는 "csv-data.txt"에 행별로 저장되며 클래스 레이블을 포함하는 각 행의 첫 번째 번호가 표시됩니다. X_train에서 두 번째 인덱스에, 당신은 종료 인덱스를 생략 할 수

X_train = my_training_data[:,1:] 
Y_train = my_training_data[:,0] 

참고하고, 인덱스가 자동으로 명확성을 명시 적으로 할 수 있습니다 물론 말 (에 실행되지만이 : 따라서, 당신은해야한다 단지 참고입니다. 또한

, 거기에이 이미 numpyndarray 때문에 fit()에 호출 tolist()를 호출 할 필요가없고, 인수가리스트 인 경우 fit() 기능이 numpyndarray로 다시 변환합니다.

clf.fit(X_train.tolist(), Y_train.tolist())