2016-04-01 2 views
1

В xgboost, я делаю что-то вродеПолучение матрице из DMatrix Instance в xgboost

import numpy as np 
import xgboost as xgb 
y = np.arange(10) 
X = np.arange(20).reshape(10, 2) 
dtrain = xgb.DMatrix(X, y, feature_names=["x1", "x2"]) 

Если я хочу, чтобы извлечь значения Y в виде массива из dtrain, я могу сделать

y = dtrain.get_label() 

Есть ли способ извлечь значения X в виде массива из dtrain?

ответ

1

Я так не считаю. С вашей DMatrixdtrain, вы можете увидеть:

dir(dtrain) 

['__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_feature_names', '_feature_types', '_init_from_csc', '_init_from_csr', '_init_from_npy2d', 'feature_names', 'feature_types', 'get_base_margin', 'get_float_info', 'get_label', 'get_uint_info', 'get_weight', 'handle', 'num_col', 'num_row', 'save_binary', 'set_base_margin', 'set_float_info', 'set_group', 'set_label', 'set_uint_info', 'set_weight', 'slice'] 

Лучшее, что я могу найти

dtrain.feature_names 

который будет возвращать ваш ["x1", "x2"]. dtrain.feature_types несколько полезен, и вы можете использовать такие фрагменты, как dtrain.slice(range(3)), но это все еще не то, что вы ищете.