Menu
CoddyTech

Подготовка данных

Часть раздела Обучение с учителем путешествия по Machine Learning на Coddy. Урок 51 из 58.

Модель считывает только полные строки чисел. В данных о пингвинах есть пропуски и два текстовых столбца, поэтому каждый столбец проходит по своей дорожке:

Схема одного пингвина из обучающей выборки. Четыре измерения проходят по синей дорожке, заполняются медианным значением, затем масштабируются и преобразуются в -0.79, 0.00, -0.05 и -0.90. Его остров Biscoe и отсутствующее значение пола проходят по оранжевой дорожке, заполняются значением «неизвестно», затем кодируются методом one-hot и преобразуются в шесть столбцов со значениями 0 или 1

Текстовые пропуски получают слово "unknown": для пингвина, пол которого не был записан, создаётся отдельный столбец вместо того, чтобы делать предположение.

text_steps = make_pipeline(
    SimpleImputer(strategy="constant", fill_value="unknown"),
    OneHotEncoder())

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

challenge icon

Задание

Средне

Пингвинам нужны дорожки с картинки. Стартовый код разделяет их и считывает номер строки.

  1. Создай prep — ColumnTransformer, который направляет numbers по числовой дорожке, а text — по текстовой.
  2. Обучи его на обучающих строках и преобразуй их за один вызов.
  3. Выведи размер и количество пропусков до преобразования, размер после него, а затем подготовленную строку с точностью до 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())

# Напишите свой код ниже
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Обучение с учителем

Потренируйтесь самостоятельно: Онлайн-компилятор Python