Подготовка данных
Часть раздела Обучение с учителем путешествия по Machine Learning на Coddy. Урок 51 из 58.
Модель считывает только полные строки чисел. В данных о пингвинах есть пропуски и два текстовых столбца, поэтому каждый столбец проходит по своей дорожке:
Текстовые пропуски получают слово "unknown": для пингвина, пол которого не был записан, создаётся отдельный столбец вместо того, чтобы делать предположение.
text_steps = make_pipeline(
SimpleImputer(strategy="constant", fill_value="unknown"),
OneHotEncoder())Подбирай столбцы только по строкам для обучения. Если медиана учитывает тестовых пингвинов, это приведёт к утечке данных в обучающую выборку.
Задание
СреднеПингвинам нужны дорожки с картинки. Стартовый код разделяет их и считывает номер строки.
- Создай
prep—ColumnTransformer, который направляетnumbersпо числовой дорожке, аtext— по текстовой. - Обучи его на обучающих строках и преобразуй их за один вызов.
- Выведи размер и количество пропусков до преобразования, размер после него, а затем подготовленную строку с точностью до 2 знаков после запятой.
Для другой колонии и строки 3:
Before: 180 penguins, 6 columns, 9 gaps
After: 180 penguins, 10 columns
Penguin 3: [-1.12 0.47 -0.83 -0.6 0. 1. 0. 0. 1. 0. ]Строка 14 — это пингвин, которого никто не смог измерить. Во что он превратится?
Попробуйте сами
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import make_pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
# Колония из Meet the Penguins, её признаки и целевая метка
penguins = pd.read_csv("penguins.csv")
numbers = ["bill_length_mm", "bill_depth_mm", "flipper_length_mm", "body_mass_g"]
text = ["island", "sex"]
X = penguins[numbers + text]
y = penguins["species"]
# Сначала разделите данные: тестовые пингвины остаются недоступными до этапа Ship the Model
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, stratify=y, random_state=0)
row = int(input())
# Напишите свой код ниже
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Обучение с учителем
1Ваша первая модель
Обучение на примерахОбучающая и тестовая выборкиОбучение и предсказаниеОценка моделиПовторение: сортировщик семян4Логистическая регрессия
Предсказания «да» или «нет»Порог принятия решенияВеса как свидетельстваНесколько классовПовторение: спам-фильтр2Метод ближайших соседей
Как работает k-NNВыбор kГраницы принятия решенийМасштабирование признаков для поиска соседейПовторение: соседи для вин5Оценка классификаторов
Матрица ошибокТочность и полнотаF1-мераНесбалансированные классыROC-кривыеПовторение: скрининговый тест8Кросс-валидация
K-блочная проверкаСправедливое сравнение моделейПоиск по сеткеПовторение: ремонт скейтбордов11Проект: виды пингвинов
Знакомство с пингвинамиПодготовка данныхВыбор моделиНастройка лучшей моделиЗапуск моделиПотренируйтесь самостоятельно: Онлайн-компилятор Python