Преобразования данных
Стандартизация, или нормализация Z-оценки
Стандартизация, также известная как нормализация Z-оценки, часто требуется для применения различных методов машинного обучения. Эти методы могут плохо работать, если отдельные признаки мало похожи на обычные данные с нормальным распределением.
В ходе стандартизации точки данных преобразуются в соответствующие стандартные оценки путем вычитания среднего значения и масштабирования к единичной дисперсии.
Стандартная оценка, также называемая Z-оценкой, — это величина (со знаком) среднеквадратичного отклонения, на которую значение наблюдения или точки данных превышает среднее значение наблюдаемой или измеряемой характеристики.
Стандартизацию можно выполнить с помощью выражения t = fit(ZScoreTransform, ...), за которым следует вызов StatsBase.transform(t, ...) или StatsBase.transform!(t, ...). standardize(ZScoreTransform, ...) — это краткая форма записи для выполнения обеих операций за один вызов.
#
StatsAPI.fit — Method
fit(ZScoreTransform, X; dims=nothing, center=true, scale=true)
Подгоняет параметры стандартизации к вектору или матрице X и возвращает объект преобразования ZScoreTransform.
Именованные аргументы
-
dims: при значении1параметры стандартизации подгоняются по столбцам; при значении2они подгоняются построчно. Значение по умолчанию —nothing, что эквивалентноdims=2с выдачей предупреждения о выводе из использования. -
center: при значенииtrue(по умолчанию) данные центрируются так, чтобы их среднее значение было равно нулю. -
scale: при значенииtrue(по умолчанию) данные масштабируются так, чтобы их дисперсия была равна единице.
Примеры
julia> using StatsBase
julia> X = [0.0 -0.5 0.5; 0.0 1.0 2.0]
2×3 Matrix{Float64}:
0.0 -0.5 0.5
0.0 1.0 2.0
julia> dt = fit(ZScoreTransform, X, dims=2)
ZScoreTransform{Float64, Vector{Float64}}(2, 2, [0.0, 1.0], [0.5, 1.0])
julia> StatsBase.transform(dt, X)
2×3 Matrix{Float64}:
0.0 -1.0 1.0
-1.0 0.0 1.0
Нормализация по единичному диапазону
Нормализация по единичному диапазону, также называемая нормализацией по минимуму и максимуму, — это альтернативный способ преобразования данных: признаки масштабируются так, чтобы они лежали в интервале [0; 1].
Нормализацию по единичному диапазону можно выполнить с помощью выражения t = fit(UnitRangeTransform, ...), за которым следует вызов StatsBase.transform(t, ...) или StatsBase.transform!(t, ...). standardize(UnitRangeTransform, ...) — это краткая форма записи для выполнения обеих операций за один вызов.
#
StatsAPI.fit — Method
fit(UnitRangeTransform, X; dims=nothing, unit=true)
Подгоняет масштабные параметры к вектору или матрице X и возвращает объект преобразования UnitRangeTransform.
Именованные аргументы
-
dims: при значении1параметры стандартизации подгоняются по столбцам;
при значении 2 они подгоняются построчно. По умолчанию используется nothing.
-
unit: при значенииtrue(по умолчанию) минимальные данные сдвигаются к нулю.
Примеры
julia> using StatsBase
julia> X = [0.0 -0.5 0.5; 0.0 1.0 2.0]
2×3 Matrix{Float64}:
0.0 -0.5 0.5
0.0 1.0 2.0
julia> dt = fit(UnitRangeTransform, X, dims=2)
UnitRangeTransform{Float64, Vector{Float64}}(2, 2, true, [-0.5, 0.0], [1.0, 0.5])
julia> StatsBase.transform(dt, X)
2×3 Matrix{Float64}:
0.5 0.0 1.0
0.0 0.5 1.0
Методы
#
StatsBase.transform — Function
transform(t::AbstractDataTransform, x)
Возвращает стандартизированную копию вектора или матрицы x с использованием преобразования t.
#
StatsBase.transform! — Function
transform!(t::AbstractDataTransform, x)
Применяет преобразование t к вектору или матрице x на месте.
#
StatsBase.reconstruct — Function
reconstruct(t::AbstractDataTransform, y)
Возвращает восстановленные данные на основе вектора или матрицы y, ранее масштабированных с использованием преобразования t.
#
StatsBase.reconstruct! — Function
reconstruct!(t::AbstractDataTransform, y)
Выполняет восстановление в исходном масштабе на месте для вектора или матрицы y, ранее масштабированных с использованием преобразования t.
#
StatsBase.standardize — Function
standardize(DT, X; dims=nothing, kwargs...)
Возвращает стандартизированную копию вектора или матрицы X по измерениям dims с использованием преобразования DT, которое является подтипом AbstractDataTransform:
-
ZScoreTransform -
UnitRangeTransform
Пример
julia> using StatsBase
julia> standardize(ZScoreTransform, [0.0 -0.5 0.5; 0.0 1.0 2.0], dims=2)
2×3 Matrix{Float64}:
0.0 -1.0 1.0
-1.0 0.0 1.0
julia> standardize(UnitRangeTransform, [0.0 -0.5 0.5; 0.0 1.0 2.0], dims=2)
2×3 Matrix{Float64}:
0.5 0.0 1.0
0.0 0.5 1.0