Эта история первоначально была опубликована на Nucleusbox

Добро пожаловать в очередной блог о логистической регрессии в Python. В предыдущем блоге Логистическая регрессия для машинного обучения с использованием Python мы видели одномерную логистическую регрессию. И мы увидели основные концепции двоичной классификации, сигмовидной кривой, функции правдоподобия, а также шансов и логарифмических шансов.

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

Логистическая регрессия для машинного обучения — один из самых популярных алгоритмов машинного обучения для бинарной классификации.

Многомерная логистическая регрессия для машинного обучения

В этой логистической регрессии будет использоваться несколько переменных. Как мы видим, есть много переменных для классификации оттока.

Например:

В многомерной логистической регрессии у нас есть несколько независимых переменныхX1, X2, X3, X4,…, Xn. Таким образом, выражение сигмоидальнойфункции будет таким, как показано ниже.

Пример использования телекоммуникационного оттока

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

Есть компания X, которая получает большую часть дохода от использования голосовых и интернет-услуг. И эта компания ведет информацию о заказчике.

  • Информация о
  1. Демография
  2. Услуга доступна
  3. Расходы

Есть другая информация, которую они поддерживают, и они хотят понять поведение клиентов. Они хотели знать, уйдет ли клиент.

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

Итак, импорт и объединение данных

Импорт всех наборов данных

# Importing Pandas and NumPy
import pandas as pd
import numpy as np
# Importing all datasets
churn_data = pd.read_csv("./churn_data.csv")
customer_data = pd.read_csv("./customer_data.csv")
internet_data = pd.read_csv("./internet_data.csv")

Итак, у нас есть три файла CSV. Данные об оттоке первого файла, которые содержат информацию о клиенте, второй содержит демографические данные клиента. И в-третьих, в нем есть информация, связанная с использованием Интернета клиентом.
Итак, мы объединим все эти три набора данных в один единый фрейм данных.

#Merging on 'customerID'
df_1 = pd.merge(churn_data, customer_data, how='inner', on='customerID')
#Final dataframe with all predictor variables
telecom = pd.merge(df_1, internet_data, how='inner', on='customerID')

Подготовка данных

Теперь мы выполним подготовку данных, теперь преобразуем категориальную переменную в 1 или 0.

# Converting Yes to 1 and No to 0
telecom['PhoneService'] = telecom['PhoneService'].map({'Yes': 1, 'No': 0})
telecom['PaperlessBilling'] = telecom['PaperlessBilling'].map({'Yes': 1, 'No': 0})
telecom['Churn'] = telecom['Churn'].map({'Yes': 1, 'No': 0})
telecom['Partner'] = telecom['Partner'].map({'Yes': 1, 'No': 0})
telecom['Dependents'] = telecom['Dependents'].map({'Yes': 1, 'No': 0})

Теперь создадим фиктивную переменную. В этом процессе мы преобразуем категориальную переменную в фиктивные/индикаторные переменные. Потому что модель машинного обучения понимает только числовую переменную. и если у нас есть какая-либо категориальная переменная, мы можем создать горячее кодирование.

Почему данные One-Hot Encode в машинном обучении?

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

Таким образом, в категориальной переменной из Таблицы 1 индикатор оттока будет «Да» или «Нет», что является не чем иным, как категориальной переменной. Многие алгоритмы машинного обучения не могут работать с категориальными переменными. Потому что все они требовали числовой переменной. Только алгоритм дерева решений может работать с категориальными переменными.

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

  • Числовое кодирование
  • однократное кодирование

При числовом кодировании каждая уникальная категориальная переменная преобразуется в целочисленное значение. например, индикатор оттока из Таблицы-1 преобразуется в Да=1 и Нет=2.

Но есть одна проблема с использованием этой числовой кодировки для порядка. Из-за этого модель предполагает, что естественный порядок между категориями может привести к снижению производительности или неожиданным результатам.

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

Например :

Индикатор оттока имеет три категориальных значения Да, Нет, Возможно. Поэтому необходимы три двоичные переменные. Значение «1» помещается в двоичную переменную для оттока и значения «0» для другого индикатора оттока. Двоичные переменные часто называют «фиктивными переменными».

Yes,	No,	Maybe
1,		0,		0
0,		1,		0
0,		0,		1

Итак, вернемся к нашей проблеме, теперь мы преобразуем все категориальные переменные в фиктивные переменные.

Читать полностью статью

Сноски:

Дополнительное чтение

Хорошо, все, мы закончили. Если у вас есть какие-либо вопросы или предложения, пожалуйста, не стесняйтесь комментировать. Скоро я подниму тему машинного обучения.