2013-12-10 4 views
0

У меня проблема классификации документов только с двумя классами и размером матрицы набора учебных материалов после того, как CountVectorizer/TfidfVectorizer становится (40,845 X 218,904) (unigram). Я хотел бы использовать TruncatedSVD; однако, CountVectorizer/TfidfVectorizer, похоже, создает отрицательные значения. Я хотел бы знать, почему и как можно избежать отрицательных значений.Как избежать отрицательных значений при использовании TruncatedSVD?

tsvd = TruncatedSVD(10000, algorithm="randomized") 

     features = [ 
       dict(name="count_ng1", 
       feat=CountVectorizer(tokenizer=tokenizer, ngram_range=(1,1))), 
       dict(name="tfidf_ng1", 
       feat=TfidfVectorizer(tokenizer=tokenizer, ngram_range=(1,1))), 
       ] 
      for data in datas: 
       (D_train, y_train, d_test, y_test) = g.get_train_test(**data['params']) 

       for feat in features: 
        x_train = feat['feat'].fit_transform(d_train) 
        x_test = feat['feat'].transform(d_test) 
        X_trainSVD = tsvd.fit_transform(x_train) 
        X_testSVD = tsvd.transform(x_test) 
+0

Вы должны указать код – lejlot

+0

Я добавил код. Просто использование необходимых функций из пакета sklearn – user2179347

+1

не похоже на действительный отступ python, чтобы задать хороший вопрос (и поэтому - получить ценные ответы), вы должны подготовить короткий, воспроизводимый пример – lejlot

ответ

2

TruncatedSVD не должно иметь проблем с обработкой отрицательных значений.

CountVectorizer/TfidfVectorizer не должен давать отрицательные значения. Если они это сделают, это, вероятно, ошибка.

Я буду обновлять мой ответ, если вы обновляете свой вопрос:

  • предоставить нам действительный сценарий воспроизводства, предпочтительно на автономных данных, если это возможно (например, определить d_train/d_test, как небольшой список строк Python которые позволяют воспроизвести проблему без доступа к вашим реальным данным),
  • исправить отступ, чтобы скопировать и вставить фрагмент кода и запустить его,
  • предоставить сообщение об ошибке, которое вы получаете вместе с полная трассировка.
Смежные вопросы