我使用以下公式生成模型:
from sklearn.linear_model import SGDClassifier
text_clf = OnlinePipeline([('vect', HashingVectorizer()),
('clf-svm', SGDClassifier(loss='log', penalty='l2', alpha=1e-3, max_iter=5, random_state=None)),
])
当我使用以下方法导出此模型时:
from sklearn.externals import joblib
joblib.dump(text_clf, 'text_clf.joblib')
我的text_clf.joblib
是45MB。当我用TfidfVectorizer()
替换HashingVectorizer()
并重新导出时,我的模型是9kb。你知道吗
为什么会有这样一个文件差异,并且无论如何都要减少HashingVectorizer导出的大小。你知道吗
HashingVectorizer
是无状态的,因此不会在内存中保留任何内容。它是从HashingVectorizer
传递到SGDClassifier
的功能的数量。你知道吗默认情况下,number of features calculated from the data is
因此,
SGDClassifier
必须为所有这些特性保存coef_
,intercept_
etc变量。如果你的问题是多类的,这会增加。对于大于2的类,存储将按类的数量增加2倍。你知道吗需要更多关于
TfidfVectorizer
特性的详细信息。在大小只有9kb的情况下,TfidfVectorizer.vocabulary_
的大小是多少?您可以通过以下方式访问:相关问题 更多 >
编程相关推荐