Стандартизация
Часть раздела Статистика для машинного обучения путешествия по Machine Learning на Coddy. Урок 49 из 64.
Многие модели лучше всего обучаются, когда каждый признак центрирован относительно 0 и имеет разброс 1. Стандартизация делает именно это: каждое значение становится z-оценкой в пределах своего столбца.
Пять тыкв, вес в кг и ширина в см:
Трансляция стандартизирует все столбцы одновременно:
pumpkins = np.array([[30, 60],
[8, 30],
[22, 55],
[40, 65],
[15, 40]])
z = (pumpkins - pumpkins.mean(axis=0)) / pumpkins.std(axis=0)
print(np.round(z.mean(axis=0), 2))
print(np.round(z.std(axis=0), 2))Это выводит:
[0. 0.]
[1. 1.]Сначала округлите, а затем проверьте: без округления среднее значение 0 может выводиться как 2.22044605e-17 — крошечная погрешность округления.
В отличие от min-max, здесь нет фиксированного диапазона: большинство значений находятся в пределах от -2 до 2.
Задание
СреднеНа молочной ферме обнаружили необычных коров. Каждая строка в cows соответствует корове: удой (литров в день), вес (кг) и возраст (лет), названные в features. Программа считывает позицию коровы k.
- Дополните
standardize(X). Проверочные строки затем выводят[0. 0. 0.]и[1. 1. 1.]. - Найдите z-оценку коровы
k, наиболее удалённую от 0; знак не учитывайте, и выведите её, как показано ниже, с точностью до 2 знаков после запятой.
Для коровы с другой фермы:
Column means: [0. 0. 0.]
Column stds: [1. 1. 1.]
Cow 2 stands out by weight: 1.76 std above the herdПопробуйте сами
import numpy as np
features = ["milk", "weight", "age"]
# Одна строка на каждую корову: надой в литрах в день, вес в кг, возраст в годах
cows = np.array([[28, 610, 6],
[22, 540, 3],
[35, 680, 6],
[31, 590, 9],
[19, 650, 4],
[26, 520, 2],
[30, 600, 7]])
k = int(input())
# Возвращает X, в котором каждый столбец стандартизирован: среднее 0 и стандартное отклонение 1
def standardize(X):
# Замените строку ниже на код стандартизации
return X
# Не меняйте три строки ниже: они проверяют вашу функцию
z = standardize(cows)
print("Column means:", np.round(z.mean(axis=0), 2))
print("Column stds:", np.round(z.std(axis=0), 2))
# Напишите код ниже: чем выделяется корова k
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Статистика для машинного обучения
1Центр и разброс
Среднее и медианаПроцентили и квартилиДисперсия и стандартное отклонениеВыборка или генеральная совокупность?Самое частое значениеПовторение: сроки доставки4Выборки и генеральные совокупности
Генеральная совокупность и выборкаСредние значения выборок различаютсяРаспределение выборочных среднихЧем больше выборка, тем меньше шумИтоги: опрос жителей города2Распределения
Гистограммы плотностиФормы распределения данныхНормальная криваяПравило 68–95–99,7Z-оценкиПовторение: время работы батареи3Вероятность с помощью моделирования
Вероятность как частотаЗакон больших чиселСуммы значений на кубикахМатематическое ожиданиеУсловная вероятностьПовторение: шансы в игре в кости6Взаимосвязи
Чтение диаграмм рассеянияКорреляцияМатрица корреляцийТепловые карты корреляцийКорреляция не означает причинностьПовторение: мороженое и солнце9Масштабирование признаков
Зачем масштабировать признакиМасштабирование Min-MaxСтандартизацияStandardScalerПовторение: партнёры по восхождениюПотренируйтесь самостоятельно: Онлайн-компилятор Python