Що ви опануєте
Ви навчитеся читати таблицю, перевіряти типи й пропуски та пояснювати відмінність між числовим масивом і DataFrame. Підготовка даних визначає, яку інформацію модель фактично отримує. Приклад — вимірювання обладнання з колонками тривалості, категорії й ідентифікатора.
NumPy і форма масиву
NumPy array зберігає числові дані з визначеним типом dtype та формою shape. Одновимірний масив є послідовністю, двовимірний — матрицею рядків і стовпців. Операції можуть виконуватися для всіх елементів. Векторизація робить формулу явною, але потребує розуміння осей і сумісності форм.
import numpy as np
measurements = np.array([[10.0, 2.0], [20.0, 4.0], [30.0, 6.0]])
print(measurements.shape) # (3, 2)
print(measurements.mean(axis=0)) # [20. 4.]
print(measurements.mean(axis=1)) # [ 6. 12. 18.]
axis=0 агрегує по рядках і залишає значення для стовпців; axis=1 агрегує стовпці кожного рядка. Зміна осі змінює предметний зміст. Масив не зберігає назви колонок, тому порядок ознак має бути визначений окремо. Broadcasting дозволяє сумісним формам брати участь в операціях; він не гарантує, що вибране зіставлення має потрібний зміст.
DataFrame і Series
DataFrame — таблиця pandas з іменованими колонками й індексом. Series — одновимірна іменована послідовність. Різні колонки можуть мати різні типи. Індекс допомагає зіставляти записи, але не завжди є унікальним предметним ID. Перевіряйте його призначення перед об’єднанням наборів.
import pandas as pd
df = pd.DataFrame({
"id": [1, 2, 3, 3],
"category": ["A", "B", "A", "A"],
"minutes": [10.0, None, 30.0, 30.0],
})
print(df.dtypes)
print(df.isna().sum())
clean = df.drop_duplicates(subset=["id"]).copy()
print(clean.loc[clean["minutes"].notna(), ["id", "minutes"]])
isna знаходить пропуски, sum рахує їх по колонках. drop_duplicates видаляє повтор за погодженим ID, зберігаючи перший. Це коректно тільки якщо дубль справді означає повтор того самого запису. loc обирає рядки за маскою й колонки за назвами. Перш ніж видаляти дублі, перевірте, чи повторний ID може мати різні часові вимірювання.
Пропуски та типи
Пропуск означає відсутність або непридатність значення. Причина може бути випадковою, пов’язаною зі способом збору або залежною від самої величини. Видалення рядків здатне змінити вибірку. Заповнення нулем створює конкретне значення, яке може бути предметно неправильним. Описуйте правило й аналізуйте, чи воно не змінює висновок.
Імпутація замінює пропущені значення визначеним правилом, наприклад медіаною. Якщо медіана обчислюється для ML, її визначають лише за train і застосовують до validation/test. Інакше інформація перевірочної вибірки впливатиме на підготовку. Для категорій потрібні окреме правило та поведінка невідомого значення.
Категорії та кодування
Номер категорії не завжди означає порядок. Кодування A=1, B=2, C=3 може створити штучну числову відстань. One-hot encoding представляє кожну категорію окремою ознакою присутності. Для порядкової шкали потрібний погоджений порядок. Вибір залежить від змісту даних і моделі.
Новий набір може містити категорію, якої train не бачив. Поведінку encoder потрібно визначити явно: помилка, ігнорування або окрема група. Так само назви й порядок ознак мають збігатися на навчанні та використанні. Технічно правильна матриця з переставленими колонками може давати беззмістовний прогноз.
Масштабування
Ознаки з великим числовим діапазоном можуть домінувати в методах відстані й деяких оптимізаційних процедурах. Стандартизація часто використовує , де середнє й стандартне відхилення визначені за train. Вона не робить розподіл нормальним автоматично й не усуває предметних помилок.
Для сталої ознаки потрібна визначена обробка нульової дисперсії. Викиди можуть сильно впливати на середнє й масштаб. Перш ніж вибрати transformer, дослідіть розподіл та одиниці. Деревні моделі мають іншу залежність від масштабу, але це не скасовує перевірки якості входу.
Перевірка походження й відтворення
Зберігайте первинний набір окремо від підготовленого. Кожне перетворення має мати причину, параметри й перевірку кількості рядків. При join перевіряйте унікальність ключів: повтори з обох боків можуть створити багато рядків і змінити вагу спостережень. Для дат указуйте формат і часовий пояс.
Типові помилки та практика
Помилки: ID використано як числову ознаку без підстав, пропуски замінено нулем, статистики підготовки визначено на всьому наборі, дублікати видалено без аналізу. Відтворюваний pipeline повинен об’єднати потрібні перетворення та модель. Поясніть, які кроки навчаються з даних, а які є фіксованими правилами.
Практичний аналіз
Для таблиці вище поясніть, чому пропуск minutes не означає нуль. Що зміниться, якщо повторний ID має нову дату? Який ключ потрібний тоді? Запишіть правило підготовки та перевірку, яка виявить непогоджене збільшення рядків після join.
Підготовка як відтворюваний конвеєр
Перший етап — прочитати первинний файл без зміни його байтів. Другий — перевірити назви колонок, типи та предметні діапазони. Третій — виконати задокументовані перетворення у похідній таблиці. Збережіть журнал із причиною кожної дії: перетворення дати, обробка пропуску, уніфікація категорії. Це дозволяє пояснити відмінність підготовлених даних від джерела.
Для CSV важливі роздільник, кодування та формат десяткового числа. Wine Quality використовує крапку з комою; неправильний sep може прочитати весь рядок як одну колонку без негайної помилки. Тому перевірка форми й ключових полів потрібна перед обчисленнями. Автоматично визначений numeric-тип також не доводить, що поле є вимірюванням: числовий id або код категорії має іншу семантику.
Imputation оцінює значення для заміни пропусків за training-даними. Якщо медіану обчислити на всій таблиці до split, test вплине на підготовку. Pipeline забезпечує навчання перетворення разом із моделлю в кожному training fold. Для фіксованого перетворення одиниць, наприклад метрів у сантиметри, параметри з даних не потрібні, але формулу та одиниці все одно слід зазначити.
Категорія unknown може бути явним текстовим значенням джерела. Вона не обов’язково еквівалентна NaN. Визначте, що описує кожен стан, і лише потім обирайте перетворення. Після конвеєра повторно перевірте форму, допустимість та відповідність X і y по рядках. Зміна індексів або незалежне видалення рядків цілі може пошкодити цю відповідність і зробити подальше навчання беззмістовним.
Схема процесу
Перевіряємо типи, shape та ідентичність рядка.
Самоперевірка
Як обґрунтувати відповідь своїми словами?
Підсумок
NumPy надає числові масиви, pandas — іменовані таблиці. Підготовка повинна зберігати предметний зміст пропусків, ключів і категорій. Статистики train та журнал перетворень захищають від витоку й непомітної зміни вибірки.