2016-08-05 1 views
0

언밸런스 바이너리 분류기 데이터를 사용하고 계층화 된 K- 폴드 CV를 원합니다.기계 학습 - 계층화 된 K- 폴드 CV

다음
data = DataFrame(df,columns=names) 
train,test = cross_validation.train_test_split(df,test_size=0.20) 
train_data,test_data = pd.DataFrame(train,columns=names),pd.DataFrame(test,columns=names) 
y = test_data['Classifier'].values 
k_fold = StratifiedKFold(y, n_folds=3, shuffle=False, random_state=None) 
scores = [] 

for train_indices, test_indices in k_fold: 
    print(train_indices) 
    print(test_indices) 
    train_text = train.iloc[train_indices] 
    train_y = train.iloc[train_indices] 
    print(train_y) 
    test_text = test.iloc[test_indices] 
    test_y = test.iloc[test_indices] 
    pipeline.fit(train_text, train_y) 

, 파이프 라인은 다음과 같습니다 : 나는 아래의 오류를 받고 있어요 당신은 당신의 코드 라벨에 실제로 유효한 라벨를 통과하지 않는 데이터는 같은 일이

pipeline = Pipeline([ 
    ('count_vectorizer', CountVectorizer(ngram_range=(1, 2))), 
    ('tfidf_transformer', TfidfTransformer()), 
    ('classifier',   MultinomialNB()) ]) . The error is occurring in pipeline.Below is the error. 
C:\SMS\Anaconda32bit\lib\site-packages\sklearn\utils\validation.pyc in column_or_1d(y, warn) 
    549   return np.ravel(y) 
    --> 551  raise ValueError("bad input shape {0}".format(shape)) 
ValueError: bad input shape (54, 3) 

답변

0

:

train_text = train.iloc[train_indices] 
train_y = train.iloc[train_indices] 

동안 아마 당신은

의 라인 사이에 뭔가를 원했다
train_y = y[train_indices] 

및 시험용으로 동일하다.

+0

응답 해 주셔서 감사합니다. StratifiedK Fold에 대한 샘플을 제공해 주시겠습니까? 지금 다른 오류가 있습니다. 미리 감사드립니다! – MLUser2016

+0

그런 다음 별도의 질문을하고 오류를 보여주십시오. Sklearn 웹 사이트에 대한 예가 있습니다. – lejlot