【发布时间】:2015-06-21 14:19:05
【问题描述】:
我想使用单词以及一些附加功能(例如,有链接)来构建文本分类模型
tweets = ['this tweet has a link htt://link','this one does not','this one does http://link.net']
我使用 sklearn 来获取我的文本数据的稀疏矩阵
tfidf_vectorizer = TfidfVectorizer(max_df=0.90, max_features=200000,
min_df=0.1, stop_words='english',
use_idf=True, ntlk.tokenize,ngram_range=(1,2))
tfidf_matrix = tfidf_vectorizer.fit_transform(tweets)
我想向它添加列以支持我的文本数据的其他功能。我试过了:
import scipy as sc
all_data = sc.hstack((tfidf_matrix, [1,0,1]))
这给了我如下所示的数据:
array([ <3x8 sparse matrix of type '<type 'numpy.float64'>'
with 10 stored elements in Compressed Sparse Row format>,
1, 1, 0], dtype=object)
当我将此数据框提供给模型时:
`from sklearn.naive_bayes import MultinomialNB
clf = MultinomialNB().fit(all_data, y)`
我得到一个回溯错误:
`Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Anaconda\lib\site- packages\spyderlib\widgets\externalshell\sitecustomize.py", line 580, in runfile
execfile(filename, namespace)
File "C:/Users/c/Desktop/features.py", line 157, in <module>
clf = MultinomialNB().fit(all_data, y)
File "C:\Anaconda\lib\site-packages\sklearn\naive_bayes.py", line 302, in fit
_, n_features = X.shape
ValueError:需要超过 1 个值才能解压`
编辑:数据的形状
`tfidf_matrix.shape
(100, 2)
all_data.shape
(100L,)`
我可以将列直接附加到稀疏矩阵吗?如果没有,我应该如何将数据转换为可以支持的格式?我担心稀疏矩阵以外的东西会增加内存占用。
【问题讨论】:
-
请发布整个回溯。
-
与
MultinomialNB().fit(tfidf_matrix, y)一起工作吗? -
@AlexPlugaru 你好,亚历克斯。它有效,我只使用 tfidf_matrix。不尝试附加另一列。
-
shape和tfidf_matrix和all_data的shape是什么可能不匹配?也许你应该这样做: all_data = sc.hstack((tfidf_matrix, [[1],[0],[1]])) 在这里解释:docs.scipy.org/doc/scipy/reference/generated/… -
似乎缺少特征的形状。也许你应该做一个重塑:
all_data.reshape(tfidf_matrix.shape)
标签: python scipy scikit-learn nltk