Строковая переменная в моделировании - PullRequest
2 голосов
/ 06 мая 2020

Просто хотел услышать все мысли о моделировании строковой переменной. Предположим, что dataframe (df) со строковой переменной (Пол), закодированной как ('M' или 'F'). Попытка подобрать модель Кокса приведет к ошибке, даже если df['Sex'] является категориальной переменной:

df['Sex']=df['Sex'].astype('category)
cph = CoxPHFitter()
cph.fit(df, duration_col='time', event_col='event')

Это вызовет ошибку, понятное дело

ValueError: could not convert string to float: 'M'

Это можно легко отсортировать путем кодирования «Пол» в 0,1 одним из нескольких методов, например:

df['Sex2']=df['Sex'].replace({'F':1, 'M':0})

Затем подгонка модели с использованием вместо этого нового столбца, который будет работать плавно. Однако ... проблема (скорее, неудобство) заключается в том, что вам нужно будет повторить этот процесс для всех строковых переменных, и если у вас много переменных, становится сложнее, например, при просмотре cox.plot () вспомнить, какая ссылка переменную, так как вам нужно go вернуться в свой код, чтобы вспомнить, как вы кодировали каждую переменную.

Исходя из других платформ статистики (R и SAS), я считаю это небольшим неудобством, поскольку R и SAS могут без проблем управлять строковой переменной в моделях. SAS также может маркировать содержимое столбца, чтобы сделать его более читаемым в окончательном виде. Есть мысли или предложения о том, как это обойти?

1 Ответ

1 голос
/ 06 мая 2020

Итак, проблема в том, что вы не хотите повторять процесс кодирования, верно?

Вы можете попробовать использовать одно горячее кодирование sklearn для всех категориальных столбцов в вашем pandas фрейме данных. Прочтите документацию здесь: Sklearn Preprocessing OneHotEncoder

Также здесь есть пример использования для двух или более столбцов: Пример

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