onehotdecode

Декодируйте векторы вероятности в метки класса

    Описание

    пример

    A = onehotdecode(B,classes,featureDim) декодирует каждый вектор вероятности в B к самому вероятному классу помечают от меток заданный classes. featureDim задает размерность, по которой заданы векторы вероятности. Функция декодирует векторы вероятности в метки класса путем соответствия с положением самого высокого значения в векторе с меткой класса в соответствующем положении в classes. Каждый вектор вероятности в A заменяется значением classes это соответствует самому высокому значению в векторе вероятности.

    пример

    A = onehotdecode(B,classes,featureDim,typename) декодирует каждый вектор вероятности в B к самой вероятной метке класса и возвращает результат с типом данных typename. Используйте этот синтаксис, чтобы получить декодируемые метки класса с определенным типом данных.

    Примеры

    свернуть все

    Закодируйте набор меток в векторы вероятности, и затем декодируйте их назад в метки.

    Создайте вектор из категориальных меток, задающих типы цвета.

    colorsOriginal = ["red","blue","red","green","yellow","blue"];
    colorsOriginal = categorical(colorsOriginal)
    colorsOriginal = 1x6 categorical
         red      blue      red      green      yellow      blue 
    
    

    Определите классы в категориальном векторе.

    classes = categories(colorsOriginal)
    classes = 4x1 cell
        {'blue'  }
        {'green' }
        {'red'   }
        {'yellow'}
    
    

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

    colorsEncoded = onehotencode(colorsOriginal,1)
    colorsEncoded = 4×6
    
         0     1     0     0     0     1
         0     0     0     1     0     0
         1     0     1     0     0     0
         0     0     0     0     1     0
    
    

    Декодируйте векторы вероятности при помощи onehotdecode функция.

    colorsDecoded = onehotdecode(colorsEncoded,classes,1)
    colorsDecoded = 1x6 categorical
         red      blue      red      green      yellow      blue 
    
    

    Декодируемые метки совпадают с исходными метками.

    Создайте фиктивные переменные, и затем декодируйте их назад в исходные данные.

    Создайте вектор-столбец категориальных данных, задающих типы цвета.

    colorsOriginal = ["red";"blue";"red";"green";"yellow";"blue"];
    colorsOriginal = categorical(colorsOriginal)
    colorsOriginal = 6x1 categorical
         red 
         blue 
         red 
         green 
         yellow 
         blue 
    
    

    Определите классы в категориальном векторе.

    classes = categories(colorsOriginal);

    Создайте фиктивные переменные для каждого типа цвета при помощи dummyvar функция.

    dummyColors = dummyvar(colorsOriginal)
    dummyColors = 6×4
    
         0     0     1     0
         1     0     0     0
         0     0     1     0
         0     1     0     0
         0     0     0     1
         1     0     0     0
    
    

    Декодируйте фиктивные переменные во втором измерении при помощи onehotdecode функция.

    colorsDecoded = onehotdecode(dummyColors,classes,2)
    colorsDecoded = 6x1 categorical
         red 
         blue 
         red 
         green 
         yellow 
         blue 
    
    

    Декодируемые переменные совпадают с типами исходного цвета.

    Декодируйте набор векторов вероятности в самый вероятный класс для каждого наблюдения.

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

    numObs = 10;
    numClasses = 5;
    
    prob = rand(numObs,numClasses);
    
    tot = sum(prob,2);
    prob = prob./tot
    prob = 10×5
    
        0.2938    0.0568    0.2365    0.2546    0.1582
        0.3895    0.4174    0.0154    0.0137    0.1641
        0.0427    0.3217    0.2854    0.0931    0.2573
        0.2878    0.1529    0.2943    0.0145    0.2505
        0.2640    0.3341    0.2834    0.0405    0.0780
        0.0422    0.0614    0.3280    0.3564    0.2120
        0.1078    0.1632    0.2876    0.2689    0.1725
        0.1940    0.3249    0.1392    0.1125    0.2293
        0.2356    0.1949    0.1613    0.2338    0.1745
        0.3345    0.3326    0.0593    0.0119    0.2616
    
    

    Задайте набор пяти классов.

    classes = ["Red","Yellow","Green","Blue","Purple"];

    Декодируйте вероятности в самые вероятные классы при помощи onehotdecode функция. Векторы вероятности закодированы во второе измерение (каждый столбец соответствует уникальному классу), поэтому задайте размерность, содержащую закодированные вероятности как 2. Получите самые вероятные классы как вектор строки.

    result = onehotdecode(prob,classes,2,"string")
    result = 10x1 string
        "Red"
        "Yellow"
        "Yellow"
        "Green"
        "Yellow"
        "Blue"
        "Green"
        "Yellow"
        "Red"
        "Red"
    
    

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

    Загрузите fisheriris набор данных. Создайте X как числовая матрица, которая содержит четыре лепестковых измерения для 150 ирисовых диафрагм. Создайте S как вектор из категориальных меток, который содержит соответствующие ирисовые разновидности.

    load fisheriris
    X = meas;
    S = categorical(species);

    Одногорячий кодируют метки в векторы вероятности при помощи onehotencode функция. Закодируйте векторы вероятности во второе измерение.

    Y = onehotencode(S,2);

    Вычислите подходящие коэффициенты простого линейного классификатора.

    B = X\Y
    B = 4×3
    
        0.0834    0.2117   -0.1481
        0.2533   -0.3059    0.1412
       -0.2270    0.1888    0.0181
       -0.0635   -0.5749    0.5873
    
    

    Предскажите баллы класса от подходящих коэффициентов и гарантируйте, что баллы находятся в области значений [0,1].

    scores = X*B;
    scores = min(1,max(0,scores));

    Декодируйте предсказанные баллы класса в предсказанные метки при помощи onehotdecode функция. Затем создайте график беспорядка, чтобы выдержать сравнение, истина маркирует S с предсказанными метками label.

    label = onehotdecode(scores,categories(S),2);
    confusionchart(S,label)

    Figure contains an object of type ConfusionMatrixChart.

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

    свернуть все

    Векторы вероятности, чтобы декодировать в виде числового массива.

    Значения в B должен быть между 0 и 1. Если вектор вероятности в B содержит NaN значения, функция декодирует то наблюдение к классу с самой большой вероятностью, которая не является NaN. Если наблюдение содержит только NaN значения, функция декодирует то наблюдение к метке первого класса в classes.

    Типы данных: single | double

    Классы в виде массива ячеек из символьных векторов, вектора строки, числового вектора или двумерного символьного массива.

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

    Размерность, содержащая векторы вероятности в виде положительного целого числа.

    Используйте featureDim задавать размерность в B это содержит векторы вероятности. Функция заменяет каждый вектор в B в заданном измерении с элементом classes в той же позиции самого высокого значения вдоль вектора.

    Размерность B заданный featureDim должен иметь длину, равную количеству классов, заданных classes.

    Тип данных декодируемых меток в виде вектора символов или строкового скаляра.

    Допустимые значения typename 'categorical'Строка, и числовые типы, такие как 'single' и 'int64'. Если вы задаете числовой тип, classes должен быть числовой вектор.

    Пример: 'double'

    Типы данных: char | string

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

    свернуть все

    Декодируемые метки класса, возвращенные как категориальный массив, массив строк или числовой массив.

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

    | | |

    Введенный в R2021b