Я думаю, что есть некоторая путаница, что на самом деле означает «горячая этикетка».Я предполагаю, что вы имеете в виду «одно горячее кодирование», которое обычно используется для кодирования категориальных переменных в одном горячем кодированном объекте ( см. Также здесь ).Например, если у вас есть переменная мужчины / женщины, вы можете представить эту переменную 0 для мужчины и 1 для женщины.Возможно, это регрессионная перспектива, но для ваших учебных ярлыков она работает в основном так же.В вашем коде похоже, что вы используете «сырые» числа в качестве меток.Неотъемлемой проблемой здесь (в классификации) является то, что обычно классы не связаны друг с другом.Предположим, ваши ярлыки красные, зеленые и желтые.В своем подходе вы бы сопоставили их с классами 1,2 и 3. Одна из проблем этого подхода заключается в том, что порядок не имеет смысла, например, почему желтый (3) выше красного (1)?И почему расстояние между красным (1) и зеленым (2) меньше, чем между красным (1) и желтым (3)?
Чтобы избежать подобных проблем, вы кодируете свой класс с помощью горячих векторов.Посмотрите на вывод:
from keras.utils import np_utils
np_utils.to_categorical([0, 1,2], 2004)
>>array([[1., 0., 0., ..., 0., 0., 0.],
[0., 1., 0., ..., 0., 0., 0.],
[0., 0., 1., ..., 0., 0., 0.]])
Вы увидите, что функция to_categorical фактически начинает классы с 0. Форма (3, 2004), потому что я ввожу 3 разных класса ([0, 1, 2]) и указали количество классов со вторым аргументом 2004 .Каждый из этих векторов длины 2004 представляет отдельный класс .В зависимости от положения 1 в векторе определяются классы.Обратите внимание, что каждый вектор уникален для класса.
Наконец, взгляните на некоторые примеры из документации scikit-learn .
.полезно подумать, действительно ли вы хотите использовать годы в качестве классов (классификация) или числовых признаков (регрессия).Это я не могу вам сказать.
HTH