Scikit LinearSVC分类器的核心外培训

时间:2013-08-29 17:13:41

标签: python scikit-learn

如何训练Scikit的LinearSVC数据集太大或不适合内存?我正在尝试使用它来对文档进行分类,我有几千个标记的示例记录,但是当我尝试将所有这些文本加载到内存中并训练LinearSVC时,它消耗了超过65%的内存而且我被迫在我的系统完全没有反应之前杀死它。

是否可以将我的训练数据格式化为单个文件,并使用文件名将其提供给LinearSVC,而不必调用fit()方法?

我找到了this指南,但它只涵盖了分类,并假设训练是逐步完成的,而LinearSVC则不支持。

2 个答案:

答案 0 :(得分:4)

据我所知,像LinearSVC这样的非增量实现需要整个数据集进行训练。除非您创建它的增量版本,否则您可能无法使用LinearSVC。

scikit-learn中有分类器可以逐步使用,就像你在其中使用SGDClassifier的指南一样。 SGDClassifier具有* partial_fit *方法,允许您批量训练它。还有一些其他分类器支持增量学习,例如SGDCLassifierMultinomial Naive BayesBernoulli Naive Bayes

答案 1 :(得分:-1)

您可以使用这样的Generator功能。

def lineGenerator():
    with open(INPUT_FILENAMES_TITLE[0],'r') as f1:
        title_reader = csv.reader(f1)
        for line in title_reader:
            yield line[0]

然后您可以将分类器称为

clf = LinearSVC()
clf.fit(lineGenerator())

这假设INPUT_FILENAMES_TITLE [0]是您的文件名。