Конвертировать данные pandas в категориальные для кера - PullRequest
2 голосов
/ 03 апреля 2019

Я пытаюсь предварительно обработать данные в python для использования в функциях keras для глубокого обучения.

Я использую categorical crossentropy в качестве функции потерь при подборе модели.Требуется категориальная переменная в качестве цели.

Моя целевая выборка данных:

y_train = y_train.astype('category') y_train.head()

truth 0 0 1 0 2 1 3 0 4 0

Когда я пытался преобразовать столбец фрейма данныхпо категориям:

num_classes=2 y_train = keras.utils.to_categorical(y_train, num_classes)

Произошла ошибка: IndexError: index 1 is out of bounds for axis 1 with size 1.

Как правильно преобразовать данные?

КстатиКакие модели Keras лучше подходят для бинарной классификации (да, нет), если у меня есть выборка из 3800 наблюдений с 2300 числовыми (float32) объектами?Функции описывают в основном графические объекты.

1 Ответ

1 голос
/ 03 апреля 2019

К сожалению, мне не удалось воспроизвести вашу ошибку. Запуск:

a=pd.DataFrame(np.concatenate([np.zeros(3),np.ones(3)]) ).astype('int').astype('category')
from keras.utils import to_categorical
to_categorical(a, 2)

Я получаю вывод:

array([[1., 0.],
       [1., 0.],
       [1., 0.],
       [0., 1.],
       [0., 1.],
       [0., 1.]], dtype=float32)

Возможно, это проблема с версиями!

Хорошей новостью является то, что вам не нужно использовать categorical_crossentropy для проблемы двоичной классификации. Вы можете использовать binary_crossentropy убыток и кормить вашу модель, используя y_train в качестве цели.

Что касается вашего последнего запроса о том, какая модель keras лучше подходит для бинарной классификации, предварительно обученные модели Keras относятся к изображениям. Похоже, у вас есть табличные данные, хотя вы не сможете использовать предварительно обученную модель, но вам придется самостоятельно запускать пользовательскую модель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...