首页 > 解决方案 > Python:为什么 TruncatedSVD 的字节大于 TfidfVectorizer 的字节

问题描述

我正在尝试将我的文档数据转换为 tf-idf 矩阵以计算相似度。使用 sklearn 的 TfidfVectorizer 后,我将矩阵保存到 pkl 文件中。以下是示例代码。

data = [A bunch of words]
tfidf_vectorizer = TfidfVectorizer(norm=None,stop_words='english',max_features=50000)
tfidf_matrix = tfidf_vectorizer.fit_transform(data) # shape = (8060, 50000)
joblib.dump(tfidf_matrix, 'tfidf_vectorizer.pkl')

此外,我还想应用 sklearn 的 TruncatedSVD 来减少维度。同样,我还将简化后的矩阵保存到 pkl 文件中。以下是示例代码。

svd = TruncatedSVD(5000)
truncated = svd.fit_transform(tfidf_matrix) # shape = (8060, 5000)
joblib.dump(truncated, 'truncated.pkl')

但是,我发现 truncated.pkl 的大小是 300MB,而 tfidf_vectorizer.pkl 的大小只有 18MB。我认为截断矩阵的字节数会更少,因为它是维度。此外,我还检查了它们的数据类型是否相同。谁能解释原因,以及让 truncated.pkl 小于 tfidf_vectorizer.pkl 的任何方法?

标签: python-3.xscikit-learntf-idfsvd

解决方案


推荐阅读