使用sklearn和Python进行大型应用程序分类/抓取练习

gpa*_*rov 5 python classification scrapy scikit-learn

我正在研究一个相对较大的基于文本的Web分类问题,我计划在python中使用sklearn中的多项Naive Bayes分类器和爬行的scrapy框架.但是,我有点担心sklearn/python对于可能涉及数百万个网站分类的问题来说可能太慢了.我已经在DMOZ的几千个网站上训练了分类器.研究框架如下:

1)爬虫登陆域名并从站点上的20个链接(深度不大于1)中抓取文本.(对于爬行器的示例运行,此处的标记化单词的数量似乎在几千到高达150K之间变化)2)运行具有大约50,000个特征的sklearn多重NB分类器并根据结果记录域名

我的问题是基于Python的分类器是否适合这种大规模应用程序的任务,还是应该尝试在更快的环境中重写分类器(也可能是刮刀和字标记器)?如果是,那环境可能是什么?或者,如果伴随着代码的某些并行化,Python就足够了?谢谢

ogr*_*sel 5

例如,使用HashingVectorizer支持partial_fitAPI 的线性分类模块和其中一个线性分类模块SGDClassifier,Perceptron或者PassiveAggresiveClassifier逐步学习模型而无需在内存中向量化和加载所有数据,在学习数亿分析器时不应该有任何问题.具有数十万(散列)特征的文档.

但是,您应该使用Pipeline对象和RandomizedSearchCV主分支的类加载适合内存的小子样本(例如100k文档)和网格搜索矢量化程序的良好参数.您还可以使用RandomizedSearchCV适合内存的相同或更大的预矢量化数据集(例如,数千万个文档)微调正则化参数的值(例如,C表示PassiveAggressiveClassifier或alpha表示SGDClassifier ).

此外线性模型可以被平均(平均值coef_intercept_2个线性模型),这样你可以分区数据集,独立,然后学习线性模型平均模型得到最终的模型.