2013-04-20 3 views
4

nltk를 사용하여 분류자를 만들었으므로 리뷰를 3 개의 클래스 pos, neg 및 neu로 분류합니다.Naive Bayes 분류 자에 대한 K- 폴드 교차 유효성 확인

이제 분류기를 테스트하기 위해 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을 사용해 보셨습니까?