gpt4 book ai didi

python - 为什么来自 xgboost 的 Dmatrix 加载 svm light 文本文件的速度如此之快

转载 作者:太空宇宙 更新时间:2023-11-04 00:45:23 30 4
gpt4 key购买 nike

我正在使用 svm light 文件作为稀疏矩阵的存储。

测试表明,对于具有 570601944 个条目的 31700108x54070 矩阵

import xgboost as xgb
dtrain = xgb.DMatrix(train_file)

用了21秒,比

快多了
from sklearn.datasets import load_svmlight_file
x_train, y_train = load_svmlight_file(train_file)

用了 7 分钟。

在破解代码之前,有人可以帮我回答这个问题吗?

您对提升 load_svmlight_file 函数有什么建议吗?

非常感谢!

最佳答案

Xgboost 是用 c++ 编写的,并使用 ctypes 将其包装在 python 包中。 load_svmlight_file 的实现是用 cython 编写的,它采用 python 代码并将其转换为 c。理想情况下,cython 会产生完美的 c 代码,但有时它会产生比 c 程序员所做的更糟糕的代码。

scikit 的人自己承认 load_svmlight_file 没有它应该的那么高效,并指向另一个用 c++ 编写的库。

This implementation is written in Cython and is reasonably fast. However, a faster API-compatible loader is also available at: https://github.com/mblondel/svmlight-loader

关于python - 为什么来自 xgboost 的 Dmatrix 加载 svm light 文本文件的速度如此之快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39959593/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com