【发布时间】:2017-08-15 20:07:52
【问题描述】:
我像这样在我的代码中创建一个管道
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import SGDClassifier
from sklearn.pipeline import Pipeline
pipe = Pipeline(steps = [
('tfidf',TfidfVectorizer(max_df=0.5, min_df=10)),
('clf', SGDClassifier(loss='log', n_jobs=-1)),
])
当我开始在我的数据(大约 140 万个句子)上安装这条管道时,我看到 RAM 的使用快速而巨大地增加。
在这个增加之后,我的内核变得死了。我想,这是因为应用 TfidfVectorizer 后的稀疏矩阵已转换为密集矩阵。但是 SGDClassifier 可以处理稀疏矩阵,不是吗?
为什么会发生这种情况以及在这种情况下我能做些什么?
我的版本: ( 蟒蛇2.7, sklearn 0.18.1, scipy 0.18.1, numpy 1.12.0 )
【问题讨论】:
-
显示错误的完整堆栈跟踪
-
@VivekKumar 我使用 python 笔记本并且没有错误。我看到使用 RAM 达到限制,并且在 Ipython Notebook 中只有消息“内核似乎已经死机。它将自动重新启动。”
-
然后尝试使用没有管道的代码,即先适合tfidf,然后适合sgd。这样您就可以查明内存增加的位置。
标签: python scipy scikit-learn sparse-matrix