首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将HashingVectorizer的结果附加到HashingVectorizer先前结果的末尾

将HashingVectorizer的结果附加到HashingVectorizer先前结果的末尾
EN

Stack Overflow用户
提问于 2017-04-04 08:38:47
回答 1查看 116关注 0票数 2

我想做的是在sklearn中使用hashingVectorizer和tfidfTransformer对垃圾邮件过滤器进行增量学习。这是我的密码-

代码语言:javascript
复制
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)

finali包含100个消息,我希望将hashingVectorizer的结果附加到前面的结果中,这样我就可以在tfidfTransformer中使用它,因为hashingVectorizer是无状态的,tfidfTransformer是状态的。但我在跟踪错误-

代码语言:javascript
复制
 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

我该怎么办??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-04 12:54:54

由于scikit learn HashingVectorizer返回一个枕稀疏矩阵,所以需要使用scipy.sparse.vstack,如下所示:

代码语言:javascript
复制
temparr = vstack(temparr,essages_bow)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43202183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档