Відповіді:
Припустимо, у вашому наборі даних є категорична особливість (наприклад, колір). І ваші зразки можуть бути червоними, жовтими або синіми. Для того, щоб передати цей аргумент алгоритму ML, спочатку потрібно його кодувати так, щоб замість рядків у вас були числа.
Найпростіший спосіб зробити таке - створити зіставлення, де:
червоний -> 1
жовтий -> 2
синій -> 3
і замініть кожен рядок на його відображене значення.
Однак це може створити небажані побічні ефекти в нашій моделі ML, оскільки при роботі з номерами може здатися, що синій> жовтий (тому що 3> 2) або червоний + жовтий = синій (тому що 1 + 2 = 3). Модель не може знати, що ці дані були категоричними і потім були відображені як цілі числа.
Рішення цієї проблеми - однокольорове кодування, де ми створюємо N нових функцій , де N - кількість унікальних значень у вихідній функції. У нашому іспиті N було б дорівнює 3, оскільки у нас є 3 унікальних кольори (червоний, жовтий та синій).
Кожна з цих особливостей є двійковою і відповідатиме одному з цих унікальних значень. У нашому прикладі перша особливість буде двійковою ознакою, яка повідомляє нам, чи є цей зразок червоним чи ні, другий - це те ж саме для жовтого, а третій для синього.
Приклад такого перетворення проілюстрований нижче:
Зауважте, що оскільки цей підхід збільшує розмірність набору даних, якщо у нас є функція, яка приймає багато унікальних значень, ми можемо захотіти використовувати більш розріджене кодування (як те, яке я представив вище).
глибина: скаляр, що визначає глибину одного гарячого виміру.
індекси: Тензор індексів.
Цей приклад наведено в документації на тензорфлоу.
1. Тільки Вказівки індексів та глибини (Значення за замовчуванням для значення_-значення становить 1, а значення значення-значення 0)
indices = [0, 1, 2]
depth = 3
tf.one_hot(indices, depth) # output: [3 x 3]
# [[1., 0., 0.],
# [0., 1., 0.],
# [0., 0., 1.]]
індекси = [0, 2, -1, 1] глибина = 3 tf.one_hot (індекси, глибина, значення_ 5,0, значення значення = 0,0, вісь = -1) ## вихід: [4 x 3] # [[5.0, 0.0, 0.0], # one_hot (0) # [0,0, 0,0, 5,0], # one_hot (2) # [0,0, 0,0, 0,0], # one_hot (-1) # [0,0, 5,0, 0,0]] # one_hot (1)
Ви також можете побачити код на GitHub