4

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

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

我找到了这个指南,但它只真正涵盖了分类,并假设训练是增量完成的,LinearSVC 不支持。

4

2 回答 2

4

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

scikit-learn 中有分类器可以增量使用,就像您在使用 SGDClassifier 的指南中找到的一样。SGDClassifier 具有 *partial_fit* 方法,可让您批量训练它。还有一些其他分类器支持增量学习,例如SGDCLassifier多项式朴素贝叶斯伯努利朴素贝叶斯

于 2013-08-29T18:38:02.717 回答
-1

您可以像这样使用生成器功能。

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] 是您的文件名。

于 2013-11-06T05:08:14.257 回答