我正在尝试在数据集上做Naive Bayes,该数据集有超过6,000,000个条目,每个条目有150k的特征.我试图从以下链接实现代码: 在NLTK中实现Bag-of-Words Naive-Bayes分类器
问题是(据我所知),当我尝试使用dok_matrix作为参数运行train-method时,它无法找到iterkeys(我已将OrderedDict的行与标签配对):
Traceback (most recent call last):
File "skitest.py", line 96, in <module>
classif.train(add_label(matr, labels))
File "/usr/lib/pymodules/python2.6/nltk/classify/scikitlearn.py", line 92, in train
for f in fs.iterkeys():
File "/usr/lib/python2.6/dist-packages/scipy/sparse/csr.py", line 88, in __getattr__
return _cs_matrix.__getattr__(self, attr)
File "/usr/lib/python2.6/dist-packages/scipy/sparse/base.py", line 429, in __getattr__
raise AttributeError, attr + " not found"
AttributeError: iterkeys not found
Run Code Online (Sandbox Code Playgroud)
我的问题是,有没有办法通过条目(在线)教授分类器条目来避免使用稀疏矩阵,还是有一种稀疏矩阵格式,我可以在这种情况下有效地使用而不是dok_matrix?还是我错过了一些明显的东西?
谢谢你的时间.:)
编辑,第6节:
找到了iterkeys,所以至少代码运行.它仍然太慢,因为它花了几个小时的数据集大小为32k,但仍然没有完成.这就是我现在所得到的:
matr = dok_matrix((6000000, 150000), dtype=float32)
labels = OrderedDict()
#collect the data into the matrix
pipeline = Pipeline([('nb', MultinomialNB())])
classif = …Run Code Online (Sandbox Code Playgroud)