NLTK SklearnClassifier 包装数据
Posted
技术标签:
【中文标题】NLTK SklearnClassifier 包装数据【英文标题】:NLTK SklearnClassifier wrapper data 【发布时间】:2017-07-29 12:09:24 【问题描述】:我试图在 nltk.SklearnClassifier
包装器中创建一个 sklearn
分类器,并遇到了这个问题,如果我们不立即训练分类器(所有教程都这样做)并训练它一次数据,它是否会删除破坏先前对分类器进行的训练。我希望我说清楚了,但如果不是,这里有一些代码可以解释。
from nltk.classify.scikitlearn import SklearnClassifier
from sklearn.naive_bayes import MultinomialNB
class classifier(object):
def __init__(self,c):
self.c = c
def train(self,featuresets):
self.c.train(featuresets)
def classify(self,feature):
self.c.classify(feature)
clf = classifier(SklearnClassifier(MultinomialNB()))
while True:
#some lengthy operation
clf.train(featuresets)
#some lengthy operation again
clf.classify(feature)
我希望你现在明白我想说什么了。因此,当clf
在循环中得到训练时,之前的所有训练是否都变得无用,如果它确实变得无用,那么还有什么其他方法可以达到同样的效果?提前致谢。
【问题讨论】:
【参考方案1】:一切都取决于您使用的分类器。并非所有 sci-kit 分类器都能够多次学习。
如果您想多次训练它,请在初始化分类器对象时设置 warm_start = True。
MultinomialNB 不可能被多次训练。即http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html 能够做到这一点。
不过,首先最好考虑一下您是否真的需要多次训练它。当您的数据超出可用内存时,通常会使用增量学习。
warm_start : bool, default: False
When set to True, reuse the solution of the previous call to fit as initialization,
otherwise, just erase the previous solution. Useless for liblinear solver.
【讨论】:
以上是关于NLTK SklearnClassifier 包装数据的主要内容,如果未能解决你的问题,请参考以下文章
NLP - 'SklearnClassifier' 对象没有属性 'fit' / Python
NLTK Data 可以安装在 AWS Redshift 环境中吗?