【发布时间】:2016-12-09 00:22:01
【问题描述】:
只是想知道下一个案例怎么可能:
def fit(self, train, target):
xgtrain = xgb.DMatrix(train, label=target, missing=np.nan)
self.model = xgb.train(self.params, xgtrain, self.num_rounds)
我将训练数据集作为具有 5233 列的 csr_matrix 传递,转换为 DMatrix 后,我得到了 5322 个特征。
后来在预测步骤中,我收到了一个错误,原因是上述错误:(
def predict(self, test):
if not self.model:
return -1
xgtest = xgb.DMatrix(test)
return self.model.predict(xgtest)
错误:...训练数据没有以下字段:f5232
如何保证正确地将我的 train/test 数据集转换为 DMatrix?
有没有机会在 Python 中使用类似于 R 的东西?
# get same columns for test/train sparse matrixes
col_order <- intersect(colnames(X_train_sparse), colnames(X_test_sparse))
X_train_sparse <- X_train_sparse[,col_order]
X_test_sparse <- X_test_sparse[,col_order]
不幸的是,我的方法不起作用:
def _normalize_columns(self):
columns = (set(self.xgtest.feature_names) - set(self.xgtrain.feature_names)) | \
(set(self.xgtrain.feature_names) - set(self.xgtest.feature_names))
for item in columns:
if item in self.xgtest.feature_names:
self.xgtest.feature_names.remove(item)
else:
# seems, it's immutable structure and can not add any new item!!!
self.xgtest.feature_names.append(item)
【问题讨论】:
标签: python python-2.7 numpy machine-learning xgboost