std(axis=0) — это операция вычисления стандартного отклонения по столбцам матрицы, то есть разброса каждого признака.
Контекст тот же:
– X имеет форму (n_samples, n_features)
– каждый столбец — отдельный признак
Что делает axis=0:
– агрегация идёт по строкам
– для каждого столбца считается своё стандартное отклонение
– результат — вектор длины n_features
Пример:
import numpy as np
X = np.array([
[1, 10],
[3, 20],
[5, 30]
])
sigma = X.std(axis=0)Результат:
sigma ≈ [1.633, 8.165]
Интерпретация:
– первый признак имеет меньший разброс
– второй признак — больший
Роль в стандартизации:
Z = (X - X.mean(axis=0)) / X.std(axis=0)– каждый признак делится на своё σ
– масштабы приводятся к одному уровню
Важные технические детали:
– по умолчанию NumPy считает population std (ddof=0)
– в статистике часто используют ddof=1 для выборочной оценки:
X.std(axis=0, ddof=1)– если sigma = 0, возникает деление на ноль
– такие признаки нужно обрабатывать отдельно
Сравнение:
– std(axis=0) → разброс признаков
– std(axis=1) → разброс внутри объекта
Коротко:
std(axis=0) даёт стандартное отклонение каждого признака и используется для масштабирования и оценки числовой стабильности данных.