2013-12-10 111 views
0

CountVectorizer/TfidfVectorizer變爲(40,845 X 218,904)(unigram)後,我只有2個類和我的訓練數據集矩陣大小的文檔分類問題。我想使用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字符串的小名單:

    如果你更新你的問題我會更新我的答案這使得重現問題成爲可能,而無需訪問您的真實數據),

  • 修復縮進以使複製和粘貼您的代碼片段並運行它,
  • 提供您與相處的錯誤消息完全追溯。
相關問題