Руководство для начинающих по EDA-исследовательскому анализу данных на реальном наборе данных с использованием Numpy & Pandas в Python!

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

Темы охватывали-

1. Понимание набора данных.

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

3. Обнаружение и обработка недостающих значений

4. Выявление тенденций между функциями и целевой переменной.

5. Получение информации и выводы

Набор данных -

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

Вы можете загрузить полный набор данных по адресу: https://drive.google.com/drive/folders/1urwTQPkUypJ6dGDJgS9Gszb83bfXEG6z?usp=sharing

Кроме того, вы можете загрузить полную записную книжку из моего репозитория GitHub - https://github.com/RumanaSk/Bank-Marketting-Campaign-Analysis

Проблема-

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

Маркетинговые кампании основывались на телефонных звонках. Часто требовалось более одного контакта с одним и тем же клиентом, чтобы получить доступ, будет ли продукт (срочный банковский депозит) подписан («да») или нет («нет»). Есть четыре набора данных:

1. bank-additional-full.csv со всеми примерами (41188) и 20 входами, упорядоченными по дате (с мая 2008 г. по ноябрь 2010 г.), очень близко к данным, проанализированным в [Moro et al., 2014]

2. bank-additional.csv с 10% примеров (4119), выбранных случайным образом из 1), и 20 входов.

3. bank-full.csv со всеми примерами и 17 входными данными, отсортированными по дате (более старая версия этого набора данных с меньшим количеством входных данных).

4. bank.csv с 10% примеров и 17 входными данными, выбранными случайным образом из 3 (более старая версия этого набора данных с меньшим количеством входных данных). Наименьшие наборы данных предоставляются для тестирования более требовательных к вычислениям алгоритмов машинного обучения.

Цель: цель классификации - предсказать, подпишется ли клиент (да / нет) на срочный депозит (переменная y).

Знакомство с данными

В самом начале исследовательского анализа данных мы хотим быстро начать понимание данных, поэтому здесь мы используем df.head (), df.describe () и df.shape ().

В этом наборе данных 21 столбец и почти 41 188 строк.

Входные переменные:

1. возраст: (числовой)
2. работа : тип работы (категориальные: «администратор», «синий воротничок», «предприниматель», «домработница», «менеджмент», «пенсионер», «самозанятый», «услуги», «студент», «техник», 'безработный', 'неизвестный')
3 . семейное: семейное положение (категориальное: «разведен», «женат», «холост», «неизвестен»; примечание: «разведен» означает разведенный или овдовевший)
4. образование (категориальные: 'basic.4y', 'basic.6y', 'basic.9y', 'high.school', 'безграмотный', 'professional.course', ' University.degree ',' unknown ')
5. по умолчанию: есть кредит по умолчанию? (категорично: «нет», «да», «неизвестно»)
6. жилье: есть жилищная ссуда? (категорично: «нет», «да», «неизвестно»)
7. заем: есть личный заем? (категорично: «нет», «да», «неизвестно»

8. контакт: контактный тип связи (категориальный: "сотовый", "телефон")
9. месяц: месяц последнего контакта в году (категориальные: 'jan', 'feb', 'mar',…, 'nov', 'dec')
10. day_of_week: последний контактный день недели (категориальный: 'пн', 'вт', 'среда', 'чт', 'пт')
11. продолжительность: длительность последнего контакта в секундах (числовое значение). Важное примечание: этот атрибут сильно влияет на цель вывода (например, если длительность = 0, то y = ’no’). Тем не менее, продолжительность вызова до выполнения вызова неизвестна. Кроме того, после окончания звонка, очевидно, известно y. Таким образом, эти входные данные следует включать только для целей эталонного тестирования и от них следует отказаться, если намерение состоит в том, чтобы иметь реалистичную прогностическую модель.

12. Кампания: количество контактов, выполненных во время этой кампании и для этого клиента (числовое, включая последний контакт)
13. дней: количество дней, прошедших с момента последнего обращения к клиенту в рамках предыдущей кампании (число; 999 означает, что с клиентом ранее не обращались)
14. previous: количество контактов, выполненных до этой кампании и для этого клиента (числовое)
15. poutcome: результат предыдущей маркетинговой кампании ( категоричный: «неудача», «несуществующий», «успех»)

атрибуты социально-экономического контекста

16. emp.var.rate: коэффициент изменения занятости - квартальный показатель (числовой)
17. cons.price.idx: индекс потребительских цен - месячный показатель (числовой)
18. cons.conf.idx: индекс потребительского доверия - месячный показатель (числовой )
19. euribor3m: 3-месячная ставка euribor - дневной показатель (числовой)
20. Кол-во занятых: количество сотрудников - квартальный показатель (числовой)

Выходная переменная (желаемая цель):

21. y - подписался ли клиент на срочный депозит? (двоичный: «да», «нет»)

Категориальные переменные:

Сначала мы начинаем исследовательский анализ категориальных переменных и смотрим, что это за категории и есть ли недостающие значения для этих категорий. Здесь мы использовали пакет seaborn для создания гистограмм.

Список нормализованной относительной частоты целевого класса по категории.

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

Обработка отсутствующих значений

В наборе данных есть неизвестные значения для многих переменных. Есть много способов справиться с отсутствующими данными. Один из способов - отбросить строку, но это приведет к сокращению набора данных и, следовательно, не будет служить нашей цели построения точной и реалистичной модели прогнозирования.

Другой метод - разумно вывести значение неизвестной переменной из других переменных. Это способ вменения, при котором мы используем другие независимые переменные для определения значения отсутствующей переменной. Это не гарантирует, что все пропущенные значения будут устранены, но у большинства из них будет причина, которая может быть полезна при прогнозировании.

Переменные с неизвестными / отсутствующими значениями: «образование», «работа», «жилье», «ссуда», «по умолчанию» и «семейное положение». Но наиболее важными из них являются «образование», «работа», «жилье» и «ссуда». Число неизвестных для слова «супружеский» очень мало. Неизвестное значение для переменной «по умолчанию» считается записанным как неизвестное. Возможно, клиент не желает раскрывать эту информацию представителю банка. Следовательно, неизвестное значение в «default» на самом деле является отдельным значением.

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

Вменение:

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

Вывод об образовании на основании работы. Из перекрестных таблиц видно, что люди, занимающие руководящие должности, обычно имеют высшее образование. Следовательно, везде, где «работа» = менеджмент и «образование» = неизвестно, мы можем заменить «образование» на «университет. Степень». Аналогично, «работа» = «услуги» → «образование» = «старшая школа» и «работа» = «домработница» → «образование» = «базовая. 4 года».

Вывод о вакансиях на основе образования: если «образование» = «базовое 4 года», «базовое 6 лет» или «базовое 9 лет», то «работа» обычно является «синими воротничками». Если «образование» = «профессиональный. Курс», то «работа» = «техник».

Вывод рабочих мест по возрасту. Как мы видим, если «возраст» ›60, то« работа »будет« на пенсии », что имеет смысл.

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

Вменения для дома и ссуды: мы снова используем перекрестную таблицу между «домом» и «работой», а также между «ссудой» и «работой». Наша гипотеза состоит в том, что статус жилищной ссуды (да или нет) должно быть пропорционально каждой категории должностей. Следовательно, используя известное ранее распределение жилищной ссуды для каждой категории должностей, жилищная ссуда для неизвестных людей будет спрогнозирована таким образом, чтобы предыдущее распределение (% Дом = Да и Нет для каждой категории должностей не изменилось). Точно так же мы заполнили недостающие значения в переменной «ссуда».

Числовые переменные:

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

Отсутствующие значения: из источника данных (репозиторий U.C. Irvine ML) нам сообщают, что отсутствующие значения, или NaN, кодируются как «999». Из приведенной выше таблицы видно, что только pdays имеет пропущенные значения. Более того, отсутствует большинство значений pday.

Выбросы: выбросы определяются как значение 1,5 x Q3 (75-й процентиль). Из приведенной выше таблицы видно, что только «возраст» и «кампания» имеют выбросы как максимальное («возраст») и максимальное («кампания») ›1,5 Q3 (« возраст ») и› 1,5 Q3 ('кампания') соответственно.

Но мы также видим, что значения этих выбросов не так уж нереалистичны (max («возраст») = 98 и max («кампания») = 56). Следовательно, нам не нужно их удалять, поскольку модель прогнозирования должна представлять реальный мир. Это улучшает обобщаемость модели и делает ее надежной для реальных ситуаций. Поэтому выбросы не удаляются.

Отсутствующие значения в числовых переменных

Давайте проверим недостающие значения в "pdays"

Как видно из приведенной выше таблицы, большинство значений «pdays» отсутствует. Большинство этих недостающих значений возникает, когда «результат» «не существует». Это означает, что большинство значений в «pdays» отсутствует, потому что с клиентом никогда ранее не связывались. Чтобы справиться с этой переменной, мы удалили числовую переменную «pdays» и заменили ее категориальными переменными со следующими категориями: p_days_missing, pdays_less_5, pdays_bet_5_15 и pdays_greater_15.

Выводы. Из приведенной выше тепловой карты мы видим, что 'y_yes' (наша целевая переменная) хорошо коррелирует с 'previous', 'emp.var.rate', 'euribor3m', «nr.employed», «pdays_missing», «poutcome_success», «poutcome_nonexistent» и «pdays_bet_5_15». Мы ожидаем увидеть эти независимые переменные как важные при построении моделей.

Таким образом, мы можем сделать следующие выводы из нашего EDA:

1. Функция - РАБОТА

Связь с целевой переменной - «Синие воротнички» - это те, кто сказал НЕТ FD, в то время как те, кто «на пенсии» или работает в посте «Админ», сравнительно сказали ДА.

2. Особенность - ОБУЧЕНИЕ

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

3. Функция - месяц

Связь с целевой переменной. В апреле мы видели, как большое количество конвертировалось, в то время как в майском максимуме они говорили «нет». Единственная причина, по которой мы могли понять, заключалась в том, что в апреле у них был конец финансового года.

4. Функция - День недели

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

5. Feature- Poutcome

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

6. Функция - контакт

Связь с целевой переменной - Сотовый контакт привел к максимальному количеству конверсий, чем телефонный контакт.

7. Функция - по умолчанию

Связь с целевой переменной - Неисполнители сказали ДА, а неплательщики сказали НЕТ.

8. Специальная ссуда

Связь с целевой переменной - люди, имеющие личную ссуду или жилищную ссуду, не предпочитали присоединяться к FD.

Заключение

o Ориентация на людей относительно пожилого возраста.

o Расставьте приоритеты тех клиентов, которые были частью предыдущих кампаний.

o По графику для логистической регрессии и случайного леса мы можем сказать, что наиболее влиятельными переменными являются продолжительность, количество занятых, euribor3m и emp.var.rate.

o Судя по знакам коэффициентов переменных в логистической регрессии, «продолжительность» положительно влияет на людей, которые говорят «да». Это связано с тем, что чем дольше вы разговариваете по телефону, тем выше интерес клиента к срочному вкладу.

o «Число занятых», то есть количество сотрудников в банке, имеет положительный эффект для привлечения людей к подписке на срочный вклад. Это может быть связано с тем, что чем больше в банке сотрудников, тем он влиятельнее и престижнее.

o «euribor3m» - еще одна важная переменная, которая обозначает трехмесячную ставку Euribor.

o Этот индикатор основан на средних межбанковских процентных ставках в Еврозоне. Это также имеет положительный эффект, так как

o чем выше процентная ставка, тем охотнее покупатель будет тратить деньги на финансовые инструменты.

o Коэффициент вариации занятости (emp.var.rate) оказывает негативное влияние, что означает изменение

o уровень занятости снизит вероятность того, что клиенты подпишутся на срочный вклад.

o Это имеет смысл, потому что уровень занятости является индикатором макроэкономики. Стабильный уровень занятости означает стабильную экономическую среду, в которой люди более уверены в своих инвестициях.

NEXT Story объяснит некоторые алгоритмы машинного обучения на том же наборе данных.