将python xgboost dMatrix转换为numpy ndarray或pandas DataFrame

时间:2016-05-18 20:03:58

标签: python numpy pandas xgboost

我正在关注他们的主要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.DataFrame.head()的pandas中所做的那样

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

或者有没有办法简要了解xgboost.dMatrix中的数据情况?

提前致谢, 霍华德

2 个答案:

答案 0 :(得分:1)

霍华德,

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

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

答案 1 :(得分: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数组的方法。