Простая ошибка логистической регрессии в Python

#python #arrays #pandas #scikit-learn

#python #массивы #панды #scikit-learn

Вопрос:

Вот строка кода. Я знаю, что проблема в том, что у меня есть только одномерный массив, но я не могу найти код для приведения его к встроенному двухмерному массиву.

 def classification_model(model, data, predictors, outcome):
    model.fit(data[predictors],data[outcome])
 

где данные — это одномерный массив, который был считан из CSV-файла.

classification_model() Вызывается следующим образом: classification_model(LogisticRegression(), data, 'HvA', 'FTR') Где FTR и HvA — это имена столбцов в файле .csv и, следовательно, позиции массива в моем массиве данных (Pandas)

Трассировка: трассировка (последний последний вызов):

 File "Predict.py", line 112, in <module>
    classification_model(LogisticRegression(), reader, 'HvA', 'FTR')
  File "Predict.py", line 15, in classification_model
    model.fit(data[predictors],data[outcome])
  File "/usr/local/lib/python2.7/dist-packages/sklearn/linear_model/logistic.py", line 1174, in fit
    order="C")
  File "/usr/local/lib/python2.7/dist-packages/sklearn/utils/validation.py", line 531, in check_X_y
    check_consistent_length(X, y)
  File "/usr/local/lib/python2.7/dist-packages/sklearn/utils/validation.py", line 181, in check_consistent_length
    " samples: %r" % [int(l) for l in lengths])
ValueError: Found input variables with inconsistent numbers of samples: [1, 370]
 

Строка заголовка и первая строка данных из CSV-файла

 FTHG    FTAG    FTR HTHG    HTAG    HTR HS  AS  HST AST HF  AF  HC  AC  HY  AY  HR  AR  VCH VCD VCA Bb1X2   BbMxH   BbAvH   BbMxD   BbAvD   BbMxA   BbAvA   BbOU    BbMx>2.5    BbAv>2.5    BbMx<2.5    BbAv<2.5    BbAH    BbAHh   BbMxAHH BbAvAHH BbMxAHA BbAvAHA PSCH    PSCD    PSCA    HvA

0   0   1   0   0   1   25  10  5   2   19  11  7   2   3   3   0   1   3.4 3.5 2.25    39  3.5 3.26    3.6 3.42    2.3 2.2 37  1.95    1.86    2.02    1.92    24  0.25    2.02    1.95    1.94    1.9 3.22    3.5 2.36    0
 

Спасибо

Комментарии:

1. data[col_name].values.reshape(len(data), 1) Работает ли?

2. Отлично! это сработало, хотя проблема на этом не остановилась, теперь я получаю ошибку в строках ниже, которая связана с той же проблемой:

3. kf = KFold(data.shape[0], n_folds= 5) ошибка = [] для поезда, тест в kf: # Filter обучающие данные train_predictors = (данные [предсказатели].iloc[поезд,:])

4. выдает: Трассировка: Обратная трассировка (последний последний вызов): Файл «Predict.py «, строка 31, в classification_model train_predictors = (data[predictors].iloc[train,idx]) возвращает self._getitem_tuple(ключевой) файл «/usr/lib/python2.7/dist-packages/pandas/core/indexing.py «, строка 1449, в _getitem_tuple self._has_valid_tuple(tup) Файл «/usr/lib/python2.7/dist-packages/pandas/core/indexing.py «, строка 126, в _has_valid_tuple вызывает ошибку индексации («Слишком много индексаторов») pandas.core.indexing. Ошибка индексирования: Слишком много индексаторов

5. Я думаю. iloc в pandas принимает только один индексатор. Это должно быть просто .iloc[train], а не .iloc[train,:]

Ответ №1:

 data[col_name].values.reshape(len(data), 1)
 

Как указано Майклом К выше