Ich versuche xgboost zu verwenden Python ausführen -verwenden - auf einem Klassifikationsproblem, wo ich die Daten in einer numpy Matrix X (rows = Beobachtungen & Spalten = Merkmale) haben und die Etiketten in einem numpy array y. Da meine Daten spärlich sind, möchte ich sie mit einer spärlichen Version von X ausführen lassen, aber anscheinend fehlt mir etwas, wenn ein Fehler auftritt.XGBoost und Sparse Matrix
Hier ist, was ich tue:
# 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)
etc ...
Jetzt habe ich einen Fehler, wenn der Klassifikator zu passen versuchen:
File ".../xgboost/python-package/xgboost/sklearn.py", line 432, in fit
self._features_count = X.shape[1]
AttributeError: 'DMatrix' object has no attribute 'shape'
Nun suchte ich eine während weiter, wo es herkommen könnte, und glaube, dass es mit dem spärlichen Format zu tun hat, das ich verwenden möchte. Aber was es ist, und wie ich es beheben konnte, habe ich keine Ahnung.
Ich würde jede Hilfe oder Kommentare begrüßen! Vielen Dank
funktioniert das mit 'X'? Was sagt 'xgb' zur Verwendung der Sparse-Matrix? Sie sind oft kein Ersatz. – hpaulj