【问题标题】:convert python xgboost dMatrix to numpy ndarray or pandas DataFrame将 python xgboost dMatrix 转换为 numpy ndarray 或 pandas DataFrame
【发布时间】:2021-09-26 04:30:18
【问题描述】:

我在他们的主要 git 上关注 xgboost 示例 - https://github.com/dmlc/xgboost/blob/master/demo/guide-python/basic_walkthrough.py#L64

在此示例中,他们正在读取直接放入 dMatrix 的文件 -

dtrain = xgb.DMatrix('../data/agaricus.txt.train')
dtest = xgb.DMatrix('../data/agaricus.txt.test')

我查看了dMatrix 代码,似乎无法简要了解数据的结构 - 就像我们通常在 pandas 中使用 pandas.DataFrame.head() 所做的那样

在 xgboost 文档中提到我们可以将 numpy.ndarray 转换为 xgboost.dMatrix - 我们可以以某种方式将其转换回来 - 从 xgboost.dMatrixnumpy.ndarray,或者可能是 pandas dataFrame?我从他们的代码中看不到可能的方法 - 但也许有人知道方法?

或者有没有办法简要地查看xgboost.dMatrix 中的数据是什么样的?

提前致谢, 霍华德

【问题讨论】:

  • 可以通过dmatrix2np包实现,代码可以看这里:github.com/aporia-ai/dmatrix2np

标签: python numpy pandas xgboost


【解决方案1】:

要详细说明@jcaine 的答案,您可以使用 sklearn 加载文件,然后将它们转换为普通的 numpy 数组:

from sklearn.datasets import load_svmlight_file
train_data = load_svmlight_file('demo/data/agaricus.txt.train')
X = train_data[0].toarray()
y = train_data[1]

我还没有找到直接从 dMatrix 转换为 numpy 数组的方法。

【讨论】:

    【解决方案2】:

    霍华德,

    我相信 xgb.DMatrix 采用 libsvm 数据格式。您可以使用 scikit 的 load_svmlight_file 将这些数据转换为稀疏 CSR 矩阵:http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_svmlight_file.html

    然后,您可以使用页面底部的示例对响应变量和特征进行分区。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-27
      • 1970-01-01
      • 2018-05-22
      • 2019-10-31
      • 2019-08-04
      • 2020-02-10
      • 2015-06-13
      • 1970-01-01
      相关资源
      最近更新 更多