我想要做的是使用sklearn中的hashingVectorizer和tfidfTransformer对垃圾邮件过滤器进行增量学习。 这是我的代码 -
for i in range(0,sz-1):
messages_bow = HashingVectorizer(analyzer=split_into_lemmas,non_negative=True,n_features=3000).transform(final[i]['message'])
if i==0:
temparr=messages_bow
else:
temparr.append(messages_bow)
tfidf_transformer = TfidfTransformer().fit(temparr)
messages_tfidf = tfidf_transformer.transform(messages_bow)
spam_detector=MB.partial_fit(messages_tfidf,final[i]['label'],classes=['ham','spam'])
messages_bow = HashingVectorizer(analyzer=split_into_lemmas,non_negative=True,n_features=3000).transform(final[i+1]['message'])
#tfidf_transformer = TfidfTransformer().fit(messages_bow)
messages_tfidf = tfidf_transformer.transform(messages_bow)
predictions=spam_detector.predict(messages_tfidf)
L=list(np.array(predictions))
perf_measure(list(np.array(final[i+1]['label'])),L)
val=val+accuracy_score(final[i+1]['label'],predictions)
final [i] [' message']包含100条消息。我想将hashingVectorizer的结果附加到前一个结果,这样我就可以在tfidfTransformer中使用它,因为hashingVectorizer是无状态的并且tfidfTransformer是statefull。 但是我得到了以下错误 -
temparr.append(messages_bow)
File "/home/aditya/anaconda2/lib/python2.7/site-packages/scipy/sparse/base.py", line 525, in __getattr__
raise AttributeError(attr + " not found")
AttributeError: append not found
我该怎么办?
答案 0 :(得分:2)
由于scikit learn HashingVectorizer
返回scipy稀疏矩阵,您需要使用scipy.sparse.vstack
,这看起来像:
temparr = vstack(temparr,essages_bow)