python-3.x - 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 - python - 如何使用回溯生成在向量的数字之间添加+和-的所有可能性,因此总和应该是正数
- javascript - ReactJS TypeError:无法读取未定义的属性“eventEmitter”
- android - Xamarin.Forms MasterDetail 页面导航栏自定义
- php - Laravel 正确命名和定义路线的方法?
- amazon-web-services - 如何管理触发 AWS Lambda 函数的 AWS Cloud Watch 事件突发
- google-apps-script - Autofill empty arrays with dragging functions from last non-empty row in Col C
- python - getBit 函数没有给出正确的结果
- azure - 如何使用 REST API 从 VM 中获取 Azure 订阅和资源组?
- javascript - Vue.js + Vue2Leaflet: update computed property on map moveend
- javascript - why firebase admob is not showing ads on real device