Домашнє завдання

Розвідка даних (EDA)

Усі три рівні робляться на одній таблиці — тій самій дошці оголошень із практики. Скопіюй перші три клітинки зошита (побудова таблиці) в новий файл і працюй далі там.

Головне правило домашнього завдання те саме, що й теми: нічого не виправляй. Розвідка не чинить дані — вона вирішує, що саме доведеться чинити.


рівень 1Рівень 1 — База

Пройди повну розвідку по стовпцю вік_акаунта — так само, як у лекції її пройшли по ціні.

Що зробити:

  1. describe() і три пари, які в ньому читають: count проти кількості рядків, min і max проти здорового глузду, mean проти 50 %;
  2. гістограму з трьома різними кількостями кошиків (мало / нормально / забагато);
  3. середнє й медіану, і частку рядків, менших за середнє;
  4. межі за правилом 1.5·IQR і кількість викидів угорі та внизу.

Зроблено, якщо: названі чотири числа — середнє, медіана, верхня межа за правилом 1.5·IQR і кількість викидів; побудовано три гістограми; і в тексті є одне речення про те, чому середнє більше за медіану, і одне — про те, чи варто ці викиди прибирати й чому.


рівень 2Рівень 2 — Плюс

У лекції ми перевірили пропуск у стовпці стан за таргетом і зробили висновок, що він випадковий. Це неповна перевірка: пропуск може бути повʼязаний не з таргетом, а з іншими стовпцями.

Перевір пропуск у стан за трьома іншими стовпцями:

Для кожного стовпця побудуй ту саму таблицю, що в клітинці 9 практики: частка пропусків стану окремо в кожній групі.

Зроблено, якщо: для всіх трьох стовпців є таблиця з часткою пропусків по групах, і є висновок словами — випадковий цей пропуск чи ні, з посиланням на конкретні числа (наприклад: «у найдешевшій десятій частині стан пропущено в X %, у найдорожчій — у Y %, різниця в межах шуму»).

Підказка щодо чесності: на групі з 40 рядків різниця у 5 відсоткових пунктів — це приблизно два рядки. Перш ніж називати різницю знахідкою, подивись, скільки рядків у найменшій групі.


рівень 3Рівень 3 — Виклик

Кореляція Пірсона не бачить нелінійного звʼязку — ми переконались у цьому на парі ціна → шахрайське, де кореляція −0.012, а частка шахрайських гуляє від 2.7 % до 42.9 %.

Є проста міра, яка бачить будь-який звʼязок, не лише прямий, — кореляційне відношення (correlation ratio). Ідея: якщо, знаючи кошик за ознакою, ми краще вгадуємо таргет, то звʼязок є. Формально це частка розкиду таргета, яку пояснює розбиття на кошики:

η² = 1 − (середня дисперсія всередині кошиків) / (загальна дисперсія)

Що зробити:

  1. напиши функцію кореляційне_відношення(ознака, таргет, кошиків=10), яка розбиває ознаку на кошики рівної наповненості через pd.qcut і рахує формулу вище (зважуй внутрішні дисперсії кількістю рядків у кошику);
  2. порахуй її для трьох пар: ціна → шахрайське, вік_акаунта → шахрайське, рік → шахрайське;
  3. поруч для тих самих пар порахуй кореляцію Пірсона й склади таблицю з двох колонок;
  4. подивись, як твоя міра поводиться при кошиків = 2, 10 і 100.

Зроблено, якщо:


Підказки

  1. Перевірка «пропуск випадковий чи ні» — це завжди порівняння двох груп. Не шукай складнішого інструмента: groupby плюс mean по булевій колонці дає готову частку.

  2. Дисперсію рахуй з одним і тим самим ddof у чисельнику й знаменнику формули третього рівня, інакше при малих кошиках вилізе відʼємне значення й буде здаватись, що щось зламано.

  3. Якщо кореляційне відношення при 100 кошиках виходить велике для всіх ознак поспіль — це не помилка коду. Подумай, скільки рядків лишається в кошику й що станеться, якщо кошиків стане стільки ж, скільки рядків.