2014-11-28 1 views
0

Я работаю над системой рекомендаций для рекламы, в которой я должен предсказать, будет ли пользователь нажимать на рекламу. У меня есть 98 функций, в которых есть как функции USER, так и функции РЕКЛАМА. Некоторые из функций, которые очень важны для прогнозирования, имеют такие значения строк.Как справиться с функциями со строковыми значениями

**FEATURE** 
Inakdtive Kunmden 
Stammkfunden 
Stammkdunden 
Stammkfunden 
guteg Quartialskunden 
gutes Quartialskunden 
guteg Quartialskunden 
gutes Quartialskunden 

В этом столбце данных содержится 14 различных строковых значений. Моя модель не может принимать строковые значения в качестве входных данных, поэтому мне нужно преобразовать их в категориальные значения int. Я понятия не имею, как это сделать и сделать эти функции полезными. Я использую K-MEANS CLUSTERING & RANDOMFOREST ALGORITHM.

+0

Почему вы не назначаете уникальное значение для каждого значения функции? –

+0

@AshokaLella Как объясняется в ответе ниже, моя модель может интерпретировать эти уникальные значения целых чисел как числовые значения. – COSTA

ответ

4

Будьте осторожны, превращая список строковых значений в категориальные ints, поскольку модель, скорее всего, интерпретирует целые числа как числовые, но они, вероятно, нет.

Например, если:

'Dog'=1,'Cat'=2,'Horse'=3,'Mouse'=4,'Human'=5 

Тогда расстояние метрики в вашем алгоритме кластеризации будет думать, что люди больше похожи на мышей, чем они похожи на собак. Обычно более полезно превращать их в 14 двоичных значений, например.

Включите это:

'Dog' 
'Cat' 
'Human' 
'Mouse' 
'Dog' 

В это:

'Dog' 'Cat' 'Mouse' 'Human' 
    1  0  0  0 
    0  1  0  0 
    0  0  0  1 
    0  0  1  0 
    1  0  0  0 

Не так:

'Species' 
    1 
    2 
    5 
    4 
    1 

Однако, если данные собираются быть 'цели', которые вы классифицируя, а не «свойства» данных, вы можете оставить их в качестве ints в большинстве алгоритмов с несколькими классификациями в SciKit-Learn.

+0

Это действительно приятно. Благодарю. Это, несомненно, повысит мои результаты. Но это добавит еще 14 функций к моему набору данных. М уже борется с переобучением. Я надеюсь, что это не добавит к этому. – COSTA

1

Мне нравится user1745038's answer, и он должен дать вам достаточно хорошие результаты. Однако, если вы хотите извлечь из своих строк более значимые функции (особенно, если количество строк значительно увеличивается), рассмотрите возможность использования некоторых методов НЛП. Например, «Собака» и «Кошка» более похожи, чем «Собака» и «Мышь».

Удачи