Усі завдання — на тій самій дошці оголошень із практики. Якщо хочеш узяти інші дані,
підійде будь-яка таблиця, у якій є пропуски, текстова колонка й числові колонки в різних
одиницях (наприклад, sklearn.datasets.fetch_openml("titanic")).
рівень 1Рівень 1 — База
Пройди по своїй таблиці всі чотири рішення й запиши наслідки кожного числами.
- Пропуски. Порахуй для кожної колонки: скільки пропусків, який відсоток рядків, і чи відрізняється частка таргета в рядках із пропуском від решти.
- Прапорець. Для колонки, де пропуск виявився не випадковим, зроби колонку
<назва>_немаєі виміряй її кореляцію з таргетом. - Три шляхи. Порахуй, скільки рядків лишиться після
dropna(), після видалення найдірявішої колонки і після заповнення медіаною. Побудуй гістограму колонки до й після заповнення на одній парі осей. - Категорії. Закодуй текстову колонку прямим кодуванням і скажи, на скільки колонок виросла таблиця.
Зроблено, якщо: у зошиті є таблиця з чотирьох рядків — «спосіб → скільки рядків лишилось → скільки одиниць таргета лишилось» — і під нею твоє рішення одним реченням, який спосіб ти обираєш і чому саме для цих даних.
рівень 2Рівень 2 — Плюс
Тепер про масштаб і порядок дій.
- Масштаб міняє відповідь. Знайди у своїй таблиці свою трійку рядків, де «найближчий сусід» до базового різний у сирих одиницях і після стандартизації. Підказка: бери дві колонки з дуже різним розкидом; шукай пару, де одна різниця мала в одиницях, але велика у частках розкиду.
- Мінімакс проти викиду. Порахуй, яка частка значень колонки лягає нижче 0.1 після мінімаксу. Потім прибери одне-єдине найбільше значення й порахуй ще раз.
- Логарифм. Порахуй скошеність числової колонки до й після
log10. Побудуй обидві гістограми поруч.
Зроблено, якщо: для завдання 5 у зошиті надруковані три рядки (базовий, А, Б), дві відстані в кожному з двох режимів і рядок «ближче: …», у якому відповідь у двох режимах різна; для завдання 6 — два числа й речення, що пояснює різницю між ними.
рівень 3Рівень 3 — Виклик
Відтвори витік із сьомого розділу лекції на своїх даних і виміряй його.
- Побудуй правило, яке щось вивчає з даних. Найпростіше — пара порогів «занадто мало / занадто багато» по одній числовій колонці, підібрана за F1.
- Порахуй його якість двома способами: (а) статистики заповнення й пороги — на всій таблиці, потім поділ; (б) спершу поділ, потім усе тільки на train.
- Повтори на 20 різних поділах і збери розподіл різниці між (а) і (б).
- Зроби те саме з різною кількістю груп, у яких підбираються пороги: спільні для всіх; по одній категорійній колонці; по двох. Побудуй графік «скільки чисел вивчено з даних → середнє завищення».
Зроблено, якщо: графік із завдання 11 має щонайменше три точки; у зошиті є речення, яке називає, у скількох поділах із 20 неправильний порядок завищив оцінку, і пояснює, чому завищення майже завжди в один бік.
Підказки
- Пропуск, який залежить від значення, якого немає, найлегше впіймати одним порівнянням:
дані.groupby(дані["колонка"].isna())["таргет"].mean(). Дві сильно різні цифри — привід робити прапорець. - Якщо після стандартизації середнє тестової частини вийшло рівно нулем — ти навчив масштабувальник на всій таблиці. Це не успіх, це діагноз.
- Завищення в завданні 10 буде тим більшим, чим більше чисел вивчає твоє правило. Якщо різниця вийшла майже нульовою — додай групування, а не більше даних.
ColumnTransformerприймає списки колонок, а не самі колонки. Порядок колонок на виході — спершу всі числові, потім усі однобітні; імена можна дістати черезконвеєр.get_feature_names_out().