Как использовать случайные леса для выбора объектов с категориальными и непрерывными объектами - PullRequest
0 голосов
/ 21 января 2020

Для запуска регрессии logisti c с использованием Sciki-learn мне нужно выполнить выбор объектов с использованием случайного леса.

Я выполнил множественную линейную регрессию с использованием Scikit-learn с 3 категориальными переменными (Cat V) и 2 непрерывные переменные (продолжение V), как показано ниже

    Cat V 1    Cat V 2    Cat V 3    Cont V 1    Cont V 2
    A          C3         X2         208         3000
    B          C6         X4         256         4000
    B          C7         X5         275         2000
    C          C2         X1         508         3200

Я пытаюсь использовать метод в этой ссылке, чтобы получить следующий результат для выбора функции https://hackersandslackers.com/random-forests-for-feature-selection/

Variable    Importance
Cat V 1     0.843122
Cat V 2     0.083392
Cat V 3     0.037216
Cont V 1    0.025057
Cont V 2    0.011213

Разница в моем приложении состоит в том, что мои данные содержат как категориальные, так и непрерывные переменные, в отличие от примера, показанного в ссылке.

from toolz.functoolz import pipe
from functools import partial

predVars = [
    "Cat V 1",
    "Cat V 2",
    "Cat V 3"
]


def oneHotEncodeMultipleVars(varList, df):
    partialEncoders = (partial(varToBool, x) for x in varList)

    return pipe(df,
                *partialEncoders)

# Encoding categorical data
    X = (df
     .dropna()
     [predVars]
     .pipe((fh.oneHotEncodeMultipleVars, "df"),
           varList = predVars)
    )

Как бы я изменил приведенный выше код, чтобы включить как непрерывные переменные, так и закодированные категориальные переменные?

1 Ответ

0 голосов
/ 21 января 2020

Ваш язык не разъясняет должным образом, что на самом деле у вас есть то, что вы хотите?
Как я понимаю из вашего вопроса, что вы хотите?

В модели машинного обучения более 90% модели, которая работает только на числовые данные, если ваш набор данных содержит категориальные значения, то вам необходимо преобразовать их в числовой формат

. Существует несколько методов преобразования категориальных-> числовых c формат

  1. LabelEncoder
  2. Один горячий кодер (вы также можете использовать pd.get_dummies ())
  3. Taregt Encoder
  4. порядковый кодер

A cc для вашего кода :

Содержит 3 категориальных цвета -> преобразовать их в OHE:

При горячем кодировании ¶

Наш второй метод - это кодирование каждой категории в одно горячее кодирование (OHE) вектор (или фиктивные переменные). OHE - это метод представления, который берет каждое значение категории и превращает его в двоичный вектор размера | i | (количество значений в категории i), где все столбцы равны нулю, кроме столбца категории. Вот небольшой пример:

enter image description here

Теперь перейдем к вашему коду

from sklearn.preprocessing import OneHotEncoder
one=OneHotEncoder()
X=one.fit_transform(X) # it will return scipy.sparse.csr.csr_matrix ->>> numpy array for feeding into model

Вместо использования один горячий кодер использует get_dummies:

  new_data=pd.get_dummies(["Cat V 1"],prefix='Cat V 1',drop_first=True)
  df=pd.concat([df,new_data],axis=1)

 new_data=pd.get_dummies(["Cat V 2"],prefix='Cat V 2',drop_first=True)
  df=pd.concat([df,new_data],axis=1)

 new_data=pd.get_dummies(["Cat V 3"],prefix='Cat V 3',drop_first=True)
  df=pd.concat([df,new_data],axis=1)

Теперь вы можете развернуть свою модель

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...