HashingVectorizer与TfidfVectorizer导出文件大小

2024-04-28 23:14:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用以下公式生成模型:

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导出的大小。你知道吗


Tags: textfrom模型importmodelsklearn公式linear
1条回答
网友
1楼 · 发布于 2024-04-28 23:14:19

HashingVectorizer是无状态的,因此不会在内存中保留任何内容。它是从HashingVectorizer传递到SGDClassifier的功能的数量。你知道吗

默认情况下,number of features calculated from the data is

n_features=1048576

因此,SGDClassifier必须为所有这些特性保存coef_intercept_etc变量。如果你的问题是多类的,这会增加。对于大于2的类,存储将按类的数量增加2倍。你知道吗

需要更多关于TfidfVectorizer特性的详细信息。在大小只有9kb的情况下,TfidfVectorizer.vocabulary_的大小是多少?您可以通过以下方式访问:

len(text_clf.named_steps['vect'].vocabulary_)

相关问题 更多 >