首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NaiveBayes文本分类中的反馈

NaiveBayes文本分类中的反馈
EN

Stack Overflow用户
提问于 2017-08-02 20:28:42
回答 1查看 133关注 0票数 0

我是机器学习的新手,我正在构建一个投诉分类器,我想提供一个反馈模型,以便它可以随着时间的推移而改进

代码语言:javascript
复制
import numpy
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
value=[
'drought',
'robber',
]
targets=[
'water_department',
'police_department',
]
classifier = MultinomialNB()        
vectorizer = CountVectorizer()
counts = vectorizer.fit_transform(value)

classifier.partial_fit(counts[:1], targets[:1],classes=numpy.unique(targets))
for c,t in zip(counts[1:],targets[1:]):
    classifier.partial_fit(c, t.split())

value.append('dogs')                                   #new value to train
targets.append('animal_department')                    #new target
vectorize = CountVectorizer()
counts = vectorize.fit_transform(value)
print counts
print targets
print vectorize.vocabulary_
####problem lies here
classifier.partial_fit(counts["""dont know the index of new value"""], targets[-1])
####problem lies here

即使我以某种方式找到了新插入的值的索引,它也会给出错误

代码语言:javascript
复制
ValueError: Number of features 3 does not match previous data 2.

即使我做到了一次插入一个值

EN

回答 1

Stack Overflow用户

发布于 2017-08-12 05:43:19

我会试着从一般的角度来回答这个问题。在这里描述的朴素贝叶斯(NB)方法中有两个问题来源:

NB的

  1. Out-of-vocabulary (OOV) problem
  2. Incremental训练

OOV问题:解决OOV问题的最简单方法是将每个单词分解为3个字符。有多少这样的3-gram是可能的?假设小写字母只有26种可能的方式来填充每个位置,因此可能的字符3-gram的总数是26^3=17576,这比你可能在文本中看到的可能的英语单词的数量要少得多。

因此,一般来说,在训练NB时,一个好的想法是使用字符n元语法的概率(n=3,4,5)。这将极大地减少OOV问题。

增量训练:用于增量训练,给定一个新句子将其分解为术语(字符n-gram)。为其相应的观察类别标签更新每个术语的计数。例如,如果count(t,c)表示在类c中观察到术语t的次数,则如果在增量训练期间在类0(或类1)中看到t,则只需更新计数。更新计数也将更新最大似然概率估计。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45460920

复制
相关文章

相似问题

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