我对文本数据进行了一些文本分类。当我试图保存SGD分类器对象时,我惊讶地发现它超过了 4GB(即使我的输入是 ~600 000 行,700MB)。是什么让它如此巨大?有什么想法吗?
SGD 分类器对象中有什么?
数据挖掘
scikit-学习
梯度下降
2022-02-24 11:23:29
1个回答
我会回答,假设由于您想进行文本分类,您的特征是使用一些 TFIDF 特征提取技术创建的。下次,请指定您的功能的尺寸,而不仅仅是它们的存储。
根据文档(http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.SGDClassifier.html),该对象有一个 coef_ 属性,用于存储模型的所有权重。由于对于文本,特征向量与您的词汇量差不多,它可能相当大,特别是如果您不使用词干提取预处理您的文本,或者您不删除停用词或不相关的词。
文档还说 coef_ 的大小是类数 * 特征数。因此,根据您拥有的功能和类的数量,这可能会很快变大。
这可以部分解释为什么物体如此之大。其他因素可能是 Python 经常在您训练后将预测存储在对象中,以便您可以快速访问它们,因此您需要向您的对象添加另外 600,000 个数字。而对于这个对象,它似乎也存储了置信度分数,也就是另外 600,000。