python - 获取 TruncatedSVD.transform() 返回 float16 而不是 float64

标签 python scikit-learn

我正在使用 Sci-kit Learn 的 TruncatedSVD 算法在稀疏矩阵上执行 LSA。我希望转换后的密集矩阵具有数据类型 float16 而不是 float64。注意:我不想在转换后更改数据类型 - 那时我的计算机内存将不足。我希望 TruncatedSVD.fit() 直接返回 float16 类型的内容 - 我该怎么做?

在应用转换之前,我尝试将原始稀疏矩阵和 TruncatedSVD.components_ 更改为 float16,但输出数据类型仅为 float32 - 有所改进,但不完全是我想要的。

最佳答案

查看代码,TruncatedSVD 使用 sklearn.utils 中的 as_float_array()as_float_array() 的代码是 here .

如您所见,文档指出

The new dtype will be np.float32 or np.float64

我想你可以将它修改为 float16(也许完全删除 as_float_array 的使用?),但我不确定后果是什么。

您应该考虑的一件事是,在此类数值算法中使用较大的变量(例如 float64)有助于提高数值稳定性。如果您正在处理非常大的矩阵,这一点尤其重要。如果您使用 float16,您可能会面临由于数值问题而得到不正确结果的风险。

关于python - 获取 TruncatedSVD.transform() 返回 float16 而不是 float64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20499015/

相关文章:

python-3.x - Sklearn PCA 分解解释_方差_比率_

python - Sklearn PCA 是 pca.components_ 的 loadings?

python - 使用基于现有行值的条件在 Pandas 中创建新列并返回另一行的值

python - 什么取代了 scikit 中的 GridSearchCV._grid_scores_?

python - 访问按 KMeans 集群分组的数据的有效方法

scikit-learn - SKLearn TF-IDF 丢弃数字?

python - 在Python中使用重复的函数调用来循环某些东西(即列表)是否合适?

python - Docker X11 Forward 得到黑屏

python - 除外责任不包括

Python 伪不可变对象(immutable对象)字段