2


我正在嘗試使用「Sci kit」來學習文本分類包。向量化成分類器。然而,我想知道如何將另一個變量添加到輸入除了文本本身。假設我想在文本中添加文本中的一些單詞(因爲我認爲它可能會影響結果)。我應該怎麼做呢?
我必須在其上添加另一個分類器嗎?或者有沒有辦法將該輸入添加到矢量化文本?
謝謝。Sklearn除了用於文本分類的文本以外的其他輸入

+0

我工作的一個類似的問題和尋找到使用[專題聯盟(http://scikit-learn.org/stable/modules/generated/ sklearn.pipeline.FeatureUnion.html)http://scikit-learn.org/stable/modules/pipeline.html#feature-union。 –

回答

1

Scikit學習分類器適用於numpy數組。 這意味着,在文本向量化之後,您可以輕鬆地將新功能添加到該數組(我正在將這個句子帶回去,不是很容易但可行)。 問題出現在文本分類中,您的功能將會很少,因此正常的numpy列添加不起作用。

修改自text mining example from scikit learn scipy 2013 tutorial的代碼。

from sklearn.datasets import load_files 
from sklearn.feature_extraction.text import TfidfVectorizer 
from sklearn.naive_bayes import MultinomialNB 
import numpy as np 
import scipy 

# Load the text data 

twenty_train_subset = load_files('datasets/20news-bydate-train/', 
    categories=categories, encoding='latin-1') 

# Turn the text documents into vectors of word frequencies 
vectorizer = TfidfVectorizer(min_df=2) 
X_train_only_text_features = vectorizer.fit_transform(twenty_train_subset.data) 


print type(X_train_only_text_features) 
print "X_train_only_text_features",X_train_only_text_features.shape 

size = X_train_only_text_features.shape[0] 
print "size",size 

ones_column = np.ones(size).reshape(size,1) 
print "ones_column",ones_column.shape 


new_column = scipy.sparse.csr.csr_matrix(ones_column) 
print type(new_column) 
print "new_column",new_column.shape 

X_train= scipy.sparse.hstack([new_column,X_train_only_text_features]) 

print "X_train",X_train.shape 

輸出如下:

<class 'scipy.sparse.csr.csr_matrix'> 
X_train_only_text_features (2034, 17566) 
size 2034 
ones_column (2034L, 1L) 
<class 'scipy.sparse.csr.csr_matrix'> 
new_column (2034, 1) 
X_train (2034, 17567) 
+0

哦,我明白了。先生非常感謝您。 –

相關問題