Как избежать отрицательных значений результата при использовании Countvectorizer? - PullRequest
0 голосов
/ 04 апреля 2019

У меня проблема классификации документов только с 2 классами, и размер матрицы моего обучающего набора данных после того, как CountVectorizer / TfidfVectorizer становится (14727, 5830)).Я хотел бы использовать SmartTfidfTransformer и NaiveBayes;однако, CountVectorizer, кажется, производит отрицательные значения.Я хотел бы знать, почему и как можно избежать отрицательных значений.Однако, когда я тестировал этот код на небольших данных, он работает без ошибок.Пожалуйста, помогите мне

Data_train=vectorizer.fit_transform(Data.FilteredArticle)
#Split Data 
X_train, X_test, y_train, y_test = train_test_split(Data_train ,Data.classe,test_size=0.2)


pipe = Pipeline(steps=[('tfidf', SmartTfidfTransformer()),
                       ('NaiveBayes', NB)])

param_grid = {'tfidf__weighting': ["".join(el) + 'p'
                                   for el in product('labLd', 'sd',"clu")],
              'tfidf__norm_alpha': np.linspace(0, 1, 10),
              'NaiveBayes__alpha':(1e-2, 1e-3)}
import os 
pipe_cv = GridSearchCV(pipe,
                       param_grid=param_grid,
                       verbose=1,
                       n_jobs=(1 if os.name == 'nt' else -1),
                       cv=5)
pipe_cv.fit(X_train, y_train)

Я получил эту ошибку, когда выполнил pipe.fit: ValueError: Вход X должен быть неотрицательным.не содержит отрицательных значений

...