представление строк в виде элементов в деревьях решений с размером словаря 200 (с кодированием без горячей вставки или без него) - PullRequest
0 голосов
/ 02 января 2019

Я новичок в машинном обучении!

Я пытался маркировать кодирование всего своего словарного запаса в sci-kit learn. Но когда дерево решений было сгенерировано, сравнение имело форму типа с плавающей точкой. (например: type <= 9.5), который не имеет никакого смысла. Поэтому я решил «горячо» закодировать свои метки. Но столбцы с размером словаря 200 повторялись более одного раза (5, если быть точным) в моем наборе данных. Кол-во столбцов для каждого из данных было огромным (5 * 200 + 3). Так что это не было правильным решением. Мой словарь состоит из списка имен функций в javascript. Есть ли другие способы представить эти строки как функции в дереве решений, или я должен использовать любую другую модель ?? </p>

Обновление на мой вопрос: Мои данные выглядят так:

Столбцы:

Функции ввода

column1: строка (может быть любым словом из словаря размера 200. Примечание: это имена вызовов функций, так что это аналогично названиям цветов или названиям стран)

Аналогично, есть 4 похожих столбца, таких как column1.

Функция вывода (метка):

Тип строки. Это может быть любое слово из словаря размера 500. Опять же, это имена вызовов функций, так что это аналогично названиям цветов или названиям стран)

1 Ответ

0 голосов
/ 02 января 2019

Для этого вы можете использовать countVectorizer, даже если ваши данные не являются документами.

Рассмотрим, например, ваш словарь функций JavaScript как vocab_functions.Ваши входные функции присутствуют в пяти столбцах информационного кадра следующим образом

df[func1],df[func2],df[func3],df[func4],df[func5]

Объедините все имена функций с пробелом между ними, чтобы сформировать новый столбец

df['input_func']

Теперь примените countVectorizer к этомустолбец,

from sklearn.feature_extraction.text import CountVectorizer
corpus = [
    'func_asb func_asdnl func_15 func_sx funcd3d',
    'func_11 func_sav3 func_fdasvb15 func_saax funcdnlvasdd',
]
vectorizer = CountVectorizer()#add --- vocabulary=vocab_functions

X = vectorizer.fit_transform(corpus) # replace with df['input_func']

X.todense()
#
matrix([[0, 1, 1, 1, 0, 0, 0, 1, 1, 0],
        [1, 0, 0, 0, 1, 1, 1, 0, 0, 1]], dtype=int64)

Передать этот X в дерево решений, которое будет иметь размерность 200.

...