2013-04-20 2 views
4

Я создал классификатор с использованием nltk, он будет классифицировать отзывы на 3 класса pos, neg и neu.Проверка К-Fold Cross для классификатора Naive Bayes

Теперь, чтобы проверить классификатор, сделайте 10-кратное перекрестное подтверждение. Я нашел пример из sklearn.

from sklearn import cross_validation 
from sklearn.naive_bayes import MultinomialNB 

target = np.array([x[0] for x in train_set]) 
train = np.array([x[1:] for x in train_set]) 
cfr = MultinomialNB() 

#Simple K-Fold cross validation. 10 folds. 
cv = cross_validation.KFold(len(train_set), k=10, indices=False) 
results = [] 
for traincv, testcv in cv: 
    probas = cfr.fit(train[traincv], target[traincv]).predict_proba(train[testcv]) 
    results.append(myEvaluationFunc(target[testcv], [x[1] for x in probas])) 
print "Results: " + str(np.array(results).mean()) 

Я получаю эту ошибку

raise ValueError("Input X must be non-negative.") 
ValueError: Input X must be non-negative. 

Я не уверен, что параметр я прохожу в нем правильно или нет.

+1

Я думаю, что для реализации MultinomialNB все входные значения должны быть> = 0. Кажется, это глупое и непрактичное ограничение, но так оно и есть. – Cerin

+0

@Cerin Почему вы думаете, что это глупое или непрактичное ограничение? user236501 Что непонятно об ошибке? X должен быть неотрицательным. Какой у Вас вопрос? –

ответ

1

MultinomialNB предназначен для использования с неотрицательными характеристиками.

Вы попробовали GaussianNB?

Смежные вопросы