使用TruncatedVD时如何避免负值错误



在CountVectorizer/TfidfVectorizer变为(40845 X 218904)(unigram)后,我遇到了一个只有2个类和训练数据集矩阵大小的文档分类问题。我想使用TruncatedVD;然而,CountVectorizer/TfidfVectorizer似乎会产生负值。我想知道为什么以及如何避免负值。

    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) 

TruncatedSVD处理负值应该没有问题。

CountVectorizer/TfidfVectorizer不应产生负值。如果他们真的这么做了,那很可能是一个bug。

如果您将问题更新为:,我将更新我的答案

  • 为我们提供一个有效的复制脚本,如果可能的话,最好是在自包含的数据上(例如,将d_train/d_test定义为Python字符串的小列表,可以在不访问真实数据的情况下复制问题)
  • 修复缩进,以便可以复制和粘贴代码片段并运行它
  • 提供完整回溯时附带的错误消息

相关内容

  • 没有找到相关文章

最新更新