Концепции ИИ на Python

Подготовка данных для машинного обучения на Python

Модели машинного обучения учатся на числах и учатся лучше, когда признаки имеют похожий масштаб. Нормализация и стандартизация масштабируют данные, а умножение матриц - это способ, которым модели объединяют сразу много признаков.

Суть простыми словами

Модели машинного обучения учатся на числах и учатся лучше, когда признаки имеют похожий масштаб. Нормализация и стандартизация масштабируют данные, а умножение матриц - это способ, которым модели объединяют сразу много признаков.

Масштабируйте признаки нормализацией min-max и стандартизацией z-score и перемножьте матрицы вручную.

Главные идеи

  • Если масштабы признаков сильно различаются, большие числа начинают доминировать в модели.
  • Min-max держит значения от 0 до 1; z-score сохраняет форму распределения, но центрирует его в 0.
  • Вычисляйте параметры масштабирования на обучающих данных и применяйте их к новым данным.
  • Для произведения A × B число столбцов A должно совпадать с числом строк B.

Когда это использовать?

  • Понять, что происходит внутри нейронных сетей и библиотек ИИ.
  • Разобраться в идее до того, как реализовать её в соответствующих задачах.
  • Подготовиться к курсам по машинному обучению, собеседованиям и проектам.

Посмотрите в действии

Перетащите x5, чтобы создать выброс, и сравните, как реагируют min-max и z-score. Наведите на ячейку A·B, чтобы увидеть, какие строку и столбец она использует.

Пример кода

Запустить код →
main.py
import statistics

heights = [150, 160, 170, 180, 190]

# Min-max scaling squeezes values into the range 0..1.
low, high = min(heights), max(heights)
print("min-max:", [round((h - low) / (high - low), 2) for h in heights])

# Z-score standardization centres values on 0 with a spread of 1.
mean = statistics.mean(heights)
std = statistics.pstdev(heights)
print("z-scores:", [round((h - mean) / std, 2) for h in heights])

# Matrix multiplication: each output is a row of A dotted with a column of B.
A = [[1, 2], [3, 4]]
B = [[5, 6], [7, 8]]
product = [[sum(A[i][k] * B[k][j] for k in range(2)) for j in range(2)] for i in range(2)]
print("A x B:", product)

Ожидаемый результат

min-max: [0.0, 0.25, 0.5, 0.75, 1.0]
z-scores: [-1.41, -0.71, 0.0, 0.71, 1.41]
A x B: [[19, 22], [43, 50]]

Как это работает

Масштабирование min-max переводит наименьший рост в 0, а наибольший - в 1. Z-score вычитает среднее и делит на стандартное отклонение, поэтому значения располагаются вокруг 0. В произведении матриц каждая ячейка - это строка A, поэлементно умноженная на столбец B и просуммированная.

Измените значения и запустите программу в онлайн-компиляторе Python CodeUtility без локальной установки Python.

Практические задания

Изменяйте входные данные и проверяйте граничные случаи перед работой с большими наборами.

  1. Измените входные данные или веса и предскажите результат до запуска.
  2. Выводите промежуточные значения, чтобы проследить каждый шаг вычислений.
  3. Решите задачи по ссылкам ниже, чтобы самостоятельно реализовать идею.
Запустить в Python IDE →

Попрактикуйтесь на задаче

Примените материал этого урока к реальной задаче. Каждая задача запускается в браузере, с мгновенными тестами и разбором от ИИ.

Все задачи