小编use*_*859的帖子

在Naive Bayes中使用稀疏矩阵/在线学习(Python,scikit)

我正在尝试在数据集上做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)

python scipy sparse-matrix scikit-learn

5
推荐指数
1
解决办法
3254
查看次数

标签 统计

python ×1

scikit-learn ×1

scipy ×1

sparse-matrix ×1