Учебники

Логистическая регрессия в Python — подготовка данных

Для создания классификатора мы должны подготовить данные в формате, который запрашивается модулем построения классификатора. Мы готовим данные, выполняя One Hot Encoding .

Кодирование данных

Мы кратко обсудим, что мы подразумеваем под кодированием данных. Во-первых, давайте запустим код. Выполните следующую команду в окне кода.

In [10]: # creating one hot encoding of the categorical columns.
data = pd.get_dummies(df, columns =['job', 'marital', 'default', 'housing', 'loan', 'poutcome'])

Как говорится в комментарии, приведенное выше утверждение создаст единственное горячее кодирование данных. Давайте посмотрим, что он создал? Изучите созданные данные, называемые «данными» , распечатав записи голов в базе данных.

In [11]: data.head()

Вы увидите следующий вывод —

Созданные данные

Чтобы понять вышеприведенные данные, мы перечислим имена столбцов, выполнив команду data.columns, как показано ниже —

In [12]: data.columns
Out[12]: Index(['y', 'job_admin.', 'job_blue-collar', 'job_entrepreneur',
'job_housemaid', 'job_management', 'job_retired', 'job_self-employed', 
'job_services', 'job_student', 'job_technician', 'job_unemployed',
'job_unknown', 'marital_divorced', 'marital_married', 'marital_single', 
'marital_unknown', 'default_no', 'default_unknown', 'default_yes', 
'housing_no', 'housing_unknown', 'housing_yes', 'loan_no',
'loan_unknown', 'loan_yes', 'poutcome_failure', 'poutcome_nonexistent', 
'poutcome_success'], dtype='object')

Теперь мы объясним, как выполняется горячая кодировка командой get_dummies . Первый столбец во вновь сгенерированной базе данных — это поле «y», которое указывает, подписан ли этот клиент на TD или нет. Теперь давайте посмотрим на столбцы, которые закодированы. Первый закодированный столбец — «работа» . В базе данных вы обнаружите, что в столбце «работа» есть много возможных значений, таких как «администратор», «синие воротнички», «предприниматель» и т. Д. Для каждого возможного значения у нас есть новый столбец, созданный в базе данных, с именем столбца, добавленным в качестве префикса.

Таким образом, у нас есть столбцы с именами «job_admin», «job_blue-collar» и так далее. Для каждого закодированного поля в нашей исходной базе данных вы найдете список столбцов, добавленных в созданную базу данных, со всеми возможными значениями, которые столбец принимает в исходной базе данных. Внимательно изучите список столбцов, чтобы понять, как данные отображаются в новую базу данных.

Понимание сопоставления данных

Чтобы понять сгенерированные данные, давайте распечатаем все данные с помощью команды data. Частичный вывод после выполнения команды показан ниже.

In [13]: data

Понимание сопоставления данных

На приведенном выше экране показаны первые двенадцать строк. Если вы прокрутите вниз дальше, вы увидите, что сопоставление выполнено для всех строк.

Частичный вывод на экран ниже базы данных показан здесь для быстрого ознакомления.

Краткий справочник

Чтобы понять сопоставленные данные, давайте рассмотрим первую строку.

Сопоставленные данные

Это говорит о том, что этот клиент не подписан на TD, как указано значением в поле «y». Это также указывает на то, что этот клиент является «синим воротничком». Прокручивая по горизонтали, он скажет вам, что у него есть «жилье» и он не взял «кредит».

После этого горячего кодирования нам нужно еще немного обработать данные, прежде чем мы сможем начать строить нашу модель.

Отбрасывание «неизвестного»

Если мы рассмотрим столбцы в сопоставленной базе данных, вы обнаружите наличие нескольких столбцов, оканчивающихся на «неизвестно». Например, проверьте столбец с индексом 12 с помощью следующей команды, показанной на снимке экрана:

In [14]: data.columns[12]
Out[14]: 'job_unknown'

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

In [15]: data.drop(data.columns[[12, 16, 18, 21, 24]], axis=1, inplace=True)

Убедитесь, что вы указали правильные номера столбцов. В случае сомнений вы можете в любое время проверить имя столбца, указав его индекс в команде столбцов, как описано ранее.

После удаления нежелательных столбцов, вы можете просмотреть окончательный список столбцов, как показано в выходных данных ниже —

In [16]: data.columns
Out[16]: Index(['y', 'job_admin.', 'job_blue-collar', 'job_entrepreneur', 
'job_housemaid', 'job_management', 'job_retired', 'job_self-employed', 
'job_services', 'job_student', 'job_technician', 'job_unemployed',
'marital_divorced', 'marital_married', 'marital_single', 'default_no', 
'default_yes', 'housing_no', 'housing_yes', 'loan_no', 'loan_yes',
'poutcome_failure', 'poutcome_nonexistent', 'poutcome_success'], 
dtype='object')

На данный момент наши данные готовы для построения модели.