Преобразования данных
Стандартизация, или нормализация 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