normalize

Нормируйте данные

Описание

пример

N = normalize(A) возвращает vectorwise 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¯ и стандартное отклонение S, z - счет точки данных x z=(xX¯)S.

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

P-

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

vp=[k=1N|vk|p]1/p,

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

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

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

  • Если p является Infто v=maxi(|v(i)|).

Перемасштабирование

Перемасштабирование изменяет расстояние между min и макс. значениями в наборе данных путем протяжения или сжатия точек вдоль числовой оси. z - множество данных сохраняется, таким образом, форма распределения остается то же самое.

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

Xrescaled=a+[XminXmaxXminX](ba).

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

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

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

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

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

Среднее абсолютное отклонение (MAD) набора данных является средним значением абсолютных отклонений от медианы X˜ из данных: MAD=медиана(|xX˜|). Поэтому MAD описывает изменчивость данных относительно медианы.

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

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

Смотрите также

| |

Введенный в R2018a