normalize

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

Описание

пример

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

  • Если A является вектором, тогда normalize работает со всем вектором.

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

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

пример

N = normalize(A,dim) возвращает z -score по размерности 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 

Входные параметры

свернуть все

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

Если 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 -norm

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 -Norm

Общее определение для p -norm векторного 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 и max в наборе данных путем растяжения или сжатия точек вдоль числовой линии. 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