Индекс кортежа выходит за пределы диапазона при попытке подогнать модель XgBoost - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь обучить модель xgboost векторам слов. Когда я делаю

model = xgb.XGBClassifier()
model.fit(X_train["comment_preproc"], y_train["label"])
y_predict = model.predict(X_test["comment_preproc"])

, я получаю ошибку

IndexError                                Traceback (most recent call last)
<ipython-input-26-870161aebeee> in <module>()
      1 model = xgb.XGBClassifier()
----> 2 model.fit(X_train["comment_preproc"], y_train["label"])
      3 y_predict = model.predict(X_test["comment_preproc"])

/usr/local/lib/python3.6/dist-packages/xgboost/sklearn.py in fit(self, X, y, sample_weight, eval_set, eval_metric, early_stopping_rounds, verbose, xgb_model, sample_weight_eval_set, callbacks)
    717             evals = ()
    718 
--> 719         self._features_count = X.shape[1]
    720 
    721         if sample_weight is not None:

IndexError: tuple index out of range

Я думал, что X_train и y_train имеют разную форму, но это не так enter image description here

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 24 января 2020

Просто добавьте .to_frame() к вашей X_train["comment_preproc"] серии:

model.fit(X_train["comment_preproc"].to_frame(), y_train["label"])

или

model.fit(X_train[["comment_preproc"]], y_train["label"])

Это должно работать

0 голосов
/ 24 января 2020

Кортежи (758079,) и (758079,) состоят только из одного элемента.

Отсюда и полученная ошибка:

>>> t = (758079,)
>>> t[0]
758079
>>> t[1]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...