exponenta event banner

нормализовать

Нормализовать данные

Описание

пример

N = normalize(A) возвращает векторную z-оценку данных в A с центром 0 и стандартным отклонением 1.

  • Если A является вектором, то normalize оперирует всем вектором.

  • Если A является матрицей, таблицей или расписанием, то normalize работает с каждым столбцом данных отдельно.

  • Если A является многомерным массивом, то normalize работает вдоль первого размера массива, размер которого не равен 1.

пример

N = normalize(A,dim) возвращает z-оценку вдоль размерности dim. Например, normalize(A,2) нормализует каждую строку.

пример

N = normalize(___,method) задает метод нормализации с любым из предыдущих синтаксисов. Например, normalize(A,'norm') нормализует данные в A по евклидовой норме (2-норма).

пример

N = normalize(___,method,methodtype) указывает тип нормализации для данного метода. Например, normalize(A,'norm',Inf) нормализует данные в A используя норму бесконечности.

N = normalize(___,'center',centertype,'scale',scaletype) использует 'center' и 'scale' методы одновременно. Это единственные методы, которые можно использовать вместе. Если не указать centertype или scaletype, затем нормализация использует тип метода по умолчанию для этого метода (центрирование для получения среднего значения 0 и масштабирование на стандартное отклонение).

Используйте этот синтаксис с любым типом центра и масштаба, чтобы выполнить оба метода вместе. Например, N = normalize(A,'center','median','scale','mad'). Этот синтаксис можно также использовать для задания значений центра и масштаба. C и S из ранее вычисленной нормализации. Например, нормализовать один набор данных и сохранить параметры с помощью [N1,C,S] = normalize(A1). Затем повторно используйте эти параметры в другом наборе данных с помощью N2 = normalize(A2,'center',C,'scale',S).

пример

N = normalize(___,'DataVariables',datavars) дополнительно указывает, какие переменные должны работать, когда входные данные находятся в таблице или расписании. Этот параметр можно использовать с любым из предыдущих синтаксисов.

[N,C,S] = normalize(___) дополнительно возвращает значения центрирования и масштабирования C и S используется для выполнения нормализации. Затем можно нормализовать различные входные данные, используя значения в C и S с помощью команды N = normalize(A2,'center',C,'scale',S).

Примеры

свернуть все

Нормализуйте данные в векторе и матрице путем вычисления показателя z.

Создание вектора v и вычисляют z-балл, нормализуя данные так, чтобы они имели среднее значение 0 и стандартное отклонение 1.

v = 1:5;
N = normalize(v)
N = 1×5

   -1.2649   -0.6325         0    0.6325    1.2649

Создание матрицы B и вычислить z-балл для каждого столбца. Затем нормализуйте каждую строку.

B = magic(3)
B = 3×3

     8     1     6
     3     5     7
     4     9     2

N1 = normalize(B)
N1 = 3×3

    1.1339   -1.0000    0.3780
   -0.7559         0    0.7559
   -0.3780    1.0000   -1.1339

N2 = normalize(B,2)
N2 = 3×3

    0.8321   -1.1094    0.2774
   -1.0000         0    1.0000
   -0.2774    1.1094   -0.8321

Масштабирование вектора A по его стандартному отклонению.

A = 1:5;
Ns = normalize(A,'scale')
Ns = 1×5

    0.6325    1.2649    1.8974    2.5298    3.1623

Масштаб A таким образом, его диапазон находится в интервале [0,1].

Nr = normalize(A,'range')
Nr = 1×5

         0    0.2500    0.5000    0.7500    1.0000

Создание вектора A и нормализовать его по своей 1-норме.

A = 1:5;
Np = normalize(A,'norm',1)
Np = 1×5

    0.0667    0.1333    0.2000    0.2667    0.3333

Центрирование данных в A так что он имеет значение 0.

Nc = normalize(A,'center','mean')
Nc = 1×5

    -2    -1     0     1     2

Создайте таблицу, содержащую информацию о высоте для пяти человек.

LastName = {'Sanchez';'Johnson';'Lee';'Diaz';'Brown'};
Height = [71;69;64;67;64];
T = table(LastName,Height)
T=5×2 table
    LastName     Height
    _________    ______

    'Sanchez'      71  
    'Johnson'      69  
    'Lee'          64  
    'Diaz'         67  
    'Brown'        64  

Нормализуйте данные о высоте по максимальной высоте.

N = normalize(T,'norm',Inf,'DataVariables','Height')
N=5×2 table
    LastName     Height 
    _________    _______

    'Sanchez'          1
    'Johnson'    0.97183
    'Lee'        0.90141
    'Diaz'       0.94366
    'Brown'      0.90141

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

Создайте расписание с двумя переменными: Temperature и WindSpeed. Затем создайте второе расписание с теми же переменными, но с образцами, взятыми через год.

rng default 
Time1 = (datetime(2019,1,1):days(1):datetime(2019,1,10))';
Temperature = randi([10 40],10,1);
WindSpeed = randi([0 20],10,1);
T1 = timetable(Temperature,WindSpeed,'RowTimes',Time1)
T1=10×2 timetable
       Time        Temperature    WindSpeed
    ___________    ___________    _________

    01-Jan-2019        35             3    
    02-Jan-2019        38            20    
    03-Jan-2019        13            20    
    04-Jan-2019        38            10    
    05-Jan-2019        29            16    
    06-Jan-2019        13             2    
    07-Jan-2019        18             8    
    08-Jan-2019        26            19    
    09-Jan-2019        39            16    
    10-Jan-2019        39            20    

Time2 = (datetime(2020,1,1):days(1):datetime(2020,1,10))';
Temperature = randi([10 40],10,1);
WindSpeed = randi([0 20],10,1);
T2 = timetable(Temperature,WindSpeed,'RowTimes',Time2)
T2=10×2 timetable
       Time        Temperature    WindSpeed
    ___________    ___________    _________

    01-Jan-2020        30            14    
    02-Jan-2020        11             0    
    03-Jan-2020        36             5    
    04-Jan-2020        38             0    
    05-Jan-2020        31             2    
    06-Jan-2020        33            17    
    07-Jan-2020        33            14    
    08-Jan-2020        22             6    
    09-Jan-2020        30            19    
    10-Jan-2020        15             0    

Нормализовать первое расписание. Укажите три выхода: нормализованную таблицу, а также значения параметров центрирования и масштабирования C и S которая используется функцией для выполнения нормализации.

[T1_norm,C,S] = normalize(T1)
T1_norm=10×2 timetable
       Time        Temperature    WindSpeed
    ___________    ___________    _________

    01-Jan-2019      0.57687       -1.4636 
    02-Jan-2019        0.856       0.92885 
    03-Jan-2019      -1.4701       0.92885 
    04-Jan-2019        0.856       -0.4785 
    05-Jan-2019     0.018609       0.36591 
    06-Jan-2019      -1.4701       -1.6044 
    07-Jan-2019      -1.0049      -0.75997 
    08-Jan-2019     -0.26052       0.78812 
    09-Jan-2019      0.94905       0.36591 
    10-Jan-2019      0.94905       0.92885 

C=1×2 table
    Temperature    WindSpeed
    ___________    _________

       28.8          13.4   

S=1×2 table
    Temperature    WindSpeed
    ___________    _________

      10.748        7.1056  

Теперь нормализуйте второе расписание T2 используя значения параметров из первой нормализации. Этот метод гарантирует, что данные в T2 центрирован и масштабирован таким же образом, как T1.

T2_norm = normalize(T2,"center",C,"scale",S)
T2_norm=10×2 timetable
       Time        Temperature    WindSpeed
    ___________    ___________    _________

    01-Jan-2020      0.11165      0.084441 
    02-Jan-2020      -1.6562       -1.8858 
    03-Jan-2020      0.66992       -1.1822 
    04-Jan-2020        0.856       -1.8858 
    05-Jan-2020       0.2047       -1.6044 
    06-Jan-2020      0.39078       0.50665 
    07-Jan-2020      0.39078      0.084441 
    08-Jan-2020      -0.6327       -1.0414 
    09-Jan-2020      0.11165       0.78812 
    10-Jan-2020       -1.284       -1.8858 

По умолчанию normalize оперирует с любыми переменными в T2 которые также присутствуют в C и S. Нормализация подмножества переменных в T2, укажите переменные для работы с 'DataVariables' аргумент «имя-значение». Подмножество переменных, которое вы указываете, должно присутствовать в C и S.

Определить WindSpeed в качестве переменной данных для работы. normalize работает с этой переменной и возвращает Temperature без изменений.

T2_partial = normalize(T2,"center",C,"scale",S,"DataVariables","WindSpeed")
T2_partial=10×2 timetable
       Time        Temperature    WindSpeed
    ___________    ___________    _________

    01-Jan-2020        30         0.084441 
    02-Jan-2020        11          -1.8858 
    03-Jan-2020        36          -1.1822 
    04-Jan-2020        38          -1.8858 
    05-Jan-2020        31          -1.6044 
    06-Jan-2020        33          0.50665 
    07-Jan-2020        33         0.084441 
    08-Jan-2020        22          -1.0414 
    09-Jan-2020        30          0.78812 
    10-Jan-2020        15          -1.8858 

Входные аргументы

свернуть все

Входные данные, указанные как скаляр, вектор, матрица, многомерный массив, таблица или расписание.

Если A является числовым массивом и имеет тип single, то вывод также имеет тип single. В противном случае вывод имеет тип double.

normalize игнорирует NaN значения в A.

Типы данных: double | single | table | timetable
Поддержка комплексного номера: Да

Размерность для работы, заданная как целочисленный скаляр.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Метод нормализации, указанный как одна из следующих опций:

Метод

Описание

'zscore'

z-балл со средним значением 0 и стандартным отклонением 1

'norm'

2-норма

'scale'

Шкала по стандартному отклонению

'range'

Масштабировать диапазон данных до [0,1]

'center'

Данные центра должны иметь среднее значение 0

'medianiqr'

Данные центра и масштаба должны иметь медиану 0 и межквартильный диапазон 1

Чтобы вернуть параметры, используемые функцией для нормализации данных, укажите C и S выходные аргументы.

Тип метода, указанный как массив, таблица, 2-элементный вектор строки или имя типа, в зависимости от указанного метода:

Метод

Параметры типа метода

Описание

'zscore'

'std' (по умолчанию)

Центр и масштаб должны иметь среднее значение 0 и стандартное отклонение 1

'robust'

Центр и масштаб должны иметь среднее 0 и среднее абсолютное отклонение 1

'norm'

Положительный числовой скаляр (по умолчанию - 2)

p-норма

Inf

Норма бесконечности

'scale'

'std' (по умолчанию)

Шкала по стандартному отклонению

'mad'

Шкала по среднему абсолютному отклонению.

'first'

Масштабирование по первому элементу данных.

'iqr'

Масштабировать данные по межквартильному диапазону.

Числовой массив

Масштабирование данных по числовым значениям. Массив должен иметь совместимый размер со входом A.

Стол

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

'range'

2-элементный вектор строки (по умолчанию - [0 1])

Масштабирование диапазона данных до интервала формы [a b], где a < b.

'center'

'mean' (по умолчанию)

Центр должен иметь значение 0.

'median'

Центр, чтобы иметь медиану 0.

Числовой массив

Сместить центр по числовым значениям. Массив должен иметь совместимый размер со входом A.

Стол

Центр сдвига с использованием переменных в таблице. Каждая переменная таблицы во входных данных A центрируется с использованием значения в переменной с аналогичным именем в таблице центрирования.

Чтобы вернуть параметры, используемые функцией для нормализации данных, укажите C и S выходные аргументы.

Типы методов центра и масштаба, указанные как любые допустимые methodtype для опции 'center' или 'scale' методы, соответственно. См. раздел methodtype описание аргумента для списка доступных параметров для каждого из методов.

Пример: N = normalize(A,'center',C,'scale',S)

Переменные таблицы для работы, указанные как один из параметров в этой таблице. datavars указывает, какие переменные входной таблицы необходимо нормализовать. Другие переменные в таблице, не указанные datavars пройти на выход без работы.

ВыборОписаниеПримеры
Имя переменной

Вектор символов или скалярная строка, задающая имя переменной одной таблицы

'Var1'

"Var1"

Вектор имен переменных

Массив ячеек символьных векторов или строковый массив, где каждый элемент является именем переменной таблицы

{'Var1' 'Var2'}

["Var1" "Var2"]

Скаляр или вектор переменных индексов

Скаляр или вектор индексов табличных переменных

1

[1 3 5]

Логический вектор

Логический вектор, элементы которого соответствуют переменной таблицы, где true включает соответствующую переменную и false исключает его

[true false true]

Дескриптор функции

Дескриптор функции, принимающий переменную таблицы в качестве входного значения и возвращающий логический скаляр

@isnumeric

vartype нижний индекс

Подстрочный индекс таблицы, созданный vartype функция

vartype('numeric')

Пример: normalize(T,'norm','DataVariables',["Var1" "Var2" "Var4"])

Выходные аргументы

свернуть все

Нормализованные значения, возвращаемые в виде массива, таблицы или расписания. N имеет тот же размер, что и входные данные A.

normalize обычно оперирует всеми переменными входных таблиц и расписаний, за исключением следующих случаев:

  • При указании 'DataVariables', то normalize работает только с указанными переменными, а другие переменные в данных возвращаются в N без изменений.

  • При использовании синтаксиса normalize(T,'center',C,'scale',S) для нормализации таблицы или расписания T с использованием ранее вычисленных параметров C и S, то normalize автоматически использует имена переменных в C и S для определения переменных данных в T для работы. Другие переменные в T возвращаются в N без изменений.

Центрирование значений, возвращаемых в виде массива или таблицы.

Когда A является массивом, normalize прибыль C и S как массивы, такие, что N = (A - C) ./ S. Каждое значение в C - значение центрирования, используемое для нормализации вдоль заданного размера. Например, если A является матрицей данных 10 на 10 и normalize работает вдоль первого измерения, затем C является вектором 1 на 10, содержащим значение центрирования для каждого столбца в A.

Когда A - таблица или расписание, normalize прибыль C и S как таблицы, содержащие центры и шкалы для каждой нормализованной табличной переменной, N.Var = (A.Var - C.Var) ./ S.Var. Имена табличных переменных C и S соответствует соответствующим переменным таблицы на входе. Каждая переменная в C содержит значение центрирования, используемое для нормализации одноименной переменной в A.

Масштабирование значений, возвращаемых в виде массива или таблицы.

Когда A является массивом, normalize прибыль C и S как массивы, такие, что N = (A - C) ./ S. Каждое значение в S - значение масштабирования, используемое для нормализации вдоль заданного размера. Например, если A является матрицей данных 10 на 10 и normalize работает вдоль первого измерения, затем S является вектором 1 на 10, содержащим значение масштабирования для каждого столбца в A.

Когда A - таблица или расписание, normalize прибыль C и S как таблицы, содержащие центры и шкалы для каждой нормализованной табличной переменной, N.Var = (A.Var - C.Var) ./ S.Var. Имена табличных переменных C и S соответствует соответствующим переменным таблицы на входе. Каждая переменная в S содержит значение масштабирования, используемое для нормализации одноименной переменной в A.

Подробнее

свернуть все

Z-оценка

Для случайной величины X со средним λ и стандартным отклонением, z-оценка значения x равна z = (x λ) λ. Для выборочных данных со средним значением X w и стандартным отклонением S z-оценка точки данных x равна z = (x − X) S.

Z-оценки измеряют расстояние точки данных от среднего значения в терминах стандартного отклонения. Стандартизированный набор данных имеет среднее значение 0 и стандартное отклонение 1 и сохраняет свойства формы исходного набора данных (тот же самый перекос и куртоз).

P-норма

Общее определение p-нормы вектора v, имеющего N элементов, равно

v‖p=[∑k=1N'vk'p] 1/р,

где p - любое положительное действительное значение, Inf, или -Inf. Некоторые общие значения p:

  • Если p равно 1, то результирующая 1-норма является суммой абсолютных значений векторных элементов.

  • Если p равно 2, то результирующая 2-норма даёт векторную звёздную величину или евклидову длину вектора.

  • Если p является Inf, затем v‖∞=maxi (| v (i) |).

Перевычисление

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

Уравнение для масштабирования данных X к произвольному интервалу [a b] является

Xrescaled = a + [X minXmaxX minX] (b − a).

Пока normalize и rescale функции могут как масштабировать данные до любого произвольного интервала, так и rescale также позволяет подрезать входные данные до заданного минимального и максимального значений.

Межквартильный ареал

Межквартильный диапазон (IQR) набора данных описывает диапазон средних 50% значений при сортировке значений. Если медиана данных равна Q2, медиана нижней половины данных равна Q1, а медиана верхней половины данных равна Q3, то IQR = Q3 - Q1.

IQR обычно предпочтительнее, чем просмотр полного диапазона данных, когда данные содержат отклонения (очень большие или очень маленькие значения), поскольку IQR исключает наибольшие 25% и наименьшие 25% значений в данных.

Среднее абсолютное отклонение

Медианное абсолютное отклонение (MAD) набора данных - медианное значение абсолютных отклонений от медианного данных: MAD = медиана (|x−X˜|). Поэтому MAD описывает изменчивость данных по отношению к медиане.

MAD, как правило, предпочтительнее, чем использование стандартного отклонения данных, когда данные содержат отклонения (очень большие или очень малые значения), поскольку стандартное отклонение приводит к отклонениям от среднего значения, что приводит к чрезмерному большому воздействию. И наоборот, отклонения небольшого числа отклонений не влияют на значение MAD.

Расширенные возможности

.

См. также

| |

Представлен в R2018a