我将尝试使用xgboost在python上解决分类问题,我的数据储存在一个numpy矩阵X中(行 = 观测值 & 列 = 特征),标签则存储于numpy数组y中。由于我的数据是稀疏的,因此我希望能够使用X的稀疏版本运行,但似乎出现了错误。以下是我的操作步骤:
# Library import
import numpy as np
import xgboost as xgb
from xgboost.sklearn import XGBClassifier
from scipy.sparse import csr_matrix
# Converting to sparse data and running xgboost
X_csr = csr_matrix(X)
xgb1 = XGBClassifier()
xgtrain = xgb.DMatrix(X_csr, label = y ) #to work with the xgb format
xgtest = xgb.DMatrix(Xtest_csr)
xgb1.fit(xgtrain, y, eval_metric='auc')
dtrain_predictions = xgb1.predict(xgtest)
当我尝试拟合分类器时,现在出现了错误:
File ".../xgboost/python-package/xgboost/sklearn.py", line 432, in fit
self._features_count = X.shape[1]
AttributeError: 'DMatrix' object has no attribute 'shape'
现在,我花了一些时间想一下可能出现这种情况的原因,相信是因为我想使用的稀疏格式有关。但是具体是什么以及如何解决,我毫无头绪。
非常欢迎任何帮助或评论!非常感谢。
X
一起工作吗?xgb
对使用稀疏矩阵有什么看法?它们通常不能完全替代。 - hpaulj