У більшості налагоджених систем машинного навчання категоричні змінні обробляються природним шляхом. Наприклад, у R ви використовуєте коефіцієнти, у WEKA ви використовуєте номінальні змінні. Це не так у scikit-learn. Дерева рішень, реалізовані в scikit-learn, використовують лише числові функції, і ці функції завжди трактуються як постійні числові змінні .
Таким чином, слід уникати просто замінювати рядки хеш-кодом, оскільки, розглядаючись як безперервна числова функція, будь-яке кодування, яке ви будете використовувати, призведе до порядку, якого у ваших даних просто немає.
Один із прикладів - кодування ['червоний', 'зелений', 'синій'] з [1,2,3], призведе до дивних речей, як-от "червоний" нижче, ніж "синій", а якщо середній "червоний" а "блакитний" ви отримаєте "зелений". Ще один тонкий приклад може статися, коли ви кодуєте ['низький', 'середній', 'високий' з [1,2,3]. В останньому випадку може трапитися впорядкування, яке має сенс, однак, деякі тонкі невідповідності можуть виникнути, коли "середній" не знаходиться посередині "низького" та "високого".
Нарешті, відповідь на ваше запитання полягає в кодуванні категоріальної ознаки у кілька двійкових ознак . Наприклад, ви можете кодувати ['червоний', 'зелений', 'синій'] з 3 стовпцями, по одному для кожної категорії, маючи 1, коли категорія відповідає, а 0 - інакше. Це називається однокольоровим кодуванням , бінарним кодуванням, кодуванням one-of-k або будь-яким іншим. Ви можете перевірити тут документацію на предмет кодування категоричних особливостей та вилучення функцій - хешування та диктів . Очевидно, що однокольорове кодування розширить ваші потреби в просторі, а іноді і зашкодить продуктивності.