#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)
Как указано Майклом К выше