첫 번째 차원 (700,1000)이 0, 1, 2, 3, 4 및 10 값으로 채워지는 두 개의 numpy 배열, X_train 및 Y_train이 있습니다. 두 번째 차원 (700,)은 'Fresh'또는 'rotten'값으로 채워집니다. 왜냐하면 Rotten Tomatoes의 API를 사용하기 때문입니다. 내가 실행 어떤 이유를 들어 :MultinomialNB 오류 : "알 수없는 레이블 유형"
nb = MultinomialNB()
nb.fit(X_train, Y_train)
내가 얻을 :
ValueError: Unknown label type
내가 배열의 작은 쌍의 구축 시도 :
print xs, '\n', ys
가 제공을
[[0 0 0 0 1]
[1 0 0 2 5]
[3 2 5 5 0]
[3 2 0 0 1]
[1 5 1 0 0]]
['rotten' 'fresh' 'fresh' 'rotten' 'fresh']
및 다항식 NB 적합은 알 수없는 레이블 오류를주지 않습니다. 왜 이런 일이 일어나고 있는지에 대한 아이디어가 있습니까?
또한 X_train, Y_train의 고유 값을 numpy.unique로 확인했는데 이상하거나 잘못 입력 된 라벨이있는 것 같지 않습니다. 모두 '신선하거나'썩었습니다.
X_train 및 Y_train를 생성하는 내 코드 :
'비판'은 CSV 파일 ( https://www.dropbox.com/s/0lu5oujfm483wtr/critics.csv)에서 가져온 팬더 dataframe이며, 누락 된 데이터의 정리def make_xy(critics, vectorizer=None):
stext = critics['quote'].tolist() # need to have a list
if vectorizer == None:
vectorizer = CountVectorizer(min_df=0)
vectorizer.fit(stext)
X = vectorizer.transform(stext).toarray() # this is X
Y = np.asarray(critics['fresh'])
return X[0:1000,0:1000], Y[0:1000] # this is X_train, Y_train
:
critics = pd.read_csv('critics.csv')
critics = critics[~critics.quote.isnull()]
critics = critics[critics.fresh != 'none']
critics = critics[critics.quote.str.len() > 0]
아, 이제 완벽하게 작동합니다! 좋은 도움에 감사드립니다. – covariance