我正在关注他们的主要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中所做的那样
numpy.ndarray
转换为xgboost.dMatrix
- 我们能以某种方式将其转换回来 - 从xgboost.dMatrix
到numpy.ndarray
,或者pandas dataFrame吗?我没有看到他们的代码可能的方式 - 但也许有人知道一种方式?
或者有没有办法简要了解xgboost.dMatrix
中的数据情况?
提前致谢, 霍华德
答案 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数组的方法。