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

Мой набор данных - это набор объектов и один столбец, который по сути является представлениями, причем каждый элемент этого столбца представляет собой произвольное положительное действительное число, как показано ниже.

Сейчас в Python я хочу запустить модель Keras на нем. Я планирую использовать этот столбец в качестве выходных меток для обучения классификатора. Единственное решение, которое я могу придумать, - это масштабировать его с помощью sklearn, а затем условно каким-то образом сортировать масштабированные значения в классы для достаточного количества меток обучения. Как, например, если 0.1

+-------+

| Views |

+-------+

| 173   |

+-------+

| 943   |

+-------+

2 ответа

Я предлагаю не пытаться втиснуть это в проблему классификации, а вместо этого рассматривать это как регрессию. Две причины:

Первое: цели вашей модели ("метки" в классификации) не являются дискретными, а целочисленными. Это означает, что вы потеряете информацию, если попытаетесь ее дискретизировать.

Второе: классификация полезна, когда метки, находящиеся рядом друг с другом, не содержат информации (например, класс 1 и 2 не более похожи, чем класс 1 и 4). Однако вы хотите получать информацию из точек данных, которые находятся рядом друг с другом с точки зрения представлений.

Итак, вы, вероятно, хотите использовать регрессию. Вы можете сделать это с Keras без проблем; вам просто нужно изменить последний слой (и, возможно, некоторые другие вещи, в зависимости от вашей архитектуры). Попробуйте поискать примеры "регрессионной сети".

Извините, но каково содержание Views столбец? Это аннотация (классификация) или счетчик чего-то (регрессия)?

Если это столбец, который содержит метки, вы можете преобразовать каждое отдельное значение в один горячий кодировщик (см. Пример ниже). Это окончательное представление можно использовать в качестве выходного слоя для размещения нейронной сети.

import numpy as np
from keras.utils import to_categorical

views = np.random.randint(3, size=10)
print(views)
# [0 1 2 1 0 1 1 2 1 0]

num_classes = len(set(views))
print(num_classes)
# 3

views = to_categorical(views, num_classes)
print(views)
# [[1. 0. 0.]
#  [0. 0. 1.]
#  [1. 0. 0.]
#  [0. 0. 1.]
#  [0. 0. 1.]
#  [0. 1. 0.]
#  [0. 0. 1.]
#  [0. 1. 0.]
#  [0. 1. 0.]
#  [1. 0. 0.]]

Проверьте https://keras.io/#getting-started-30-seconds-to-keras для примера. Переменная views является y_train,

Другие вопросы по тегам