onehotencode

Закодируйте метки данных в одногорячие векторы

    Описание

    пример

    B = onehotencode(A,featureDim) кодирует метки данных в категориальном массиве A в одногорячий закодированный массив B. Функция заменяет каждый элемент A с числовым вектором из длины равняются количеству уникальных классов в A по измерению, заданному featureDim. Вектор содержит 1 в положении, соответствующем классу метки в A, и 0 в любом положении. Любой <undefined> значения закодированы к NaN значения.

    пример

    tblB = onehotencode(tblA) кодирует метки категориальных данных в таблице tblA в таблицу одногорячих закодированных числовых значений. Функция заменяет одну переменную tblA со столькими же переменных сколько количество уникальных классов в tblA. Каждая строка в tblB содержит 1 в переменной, соответствующей классу метки в tlbA и 0 во всех других переменных.

    пример

    ___ = onehotencode(___,typename) кодирует метки в числовые значения типа данных typename. Используйте этот синтаксис с любым из аргументов ввода и вывода в предыдущих синтаксисах.

    пример

    ___ = onehotencode(___,'ClassNames',classes) также задает имена классов, чтобы использовать для кодирования. Используйте этот синтаксис когда A или tblA не содержите категориальные значения, когда это необходимо, чтобы исключить любые метки класса из того, чтобы быть закодированным, или, когда это необходимо, закодировать векторные элементы в определенном порядке. Любая метка в A или tblA из класса, который не существует в classes закодирован к вектору из NaN значения.

    Примеры

    свернуть все

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

    Создайте вектор-столбец меток, где каждая строка вектора представляет одно наблюдение. Преобразуйте метки в категориальный массив.

    labels = ["red"; "blue"; "red"; "green"; "yellow"; "blue"];
    labels = categorical(labels);

    Просмотрите порядок категорий.

    categories(labels)
    ans = 4x1 cell
        {'blue'  }
        {'green' }
        {'red'   }
        {'yellow'}
    
    

    Закодируйте метки в одногорячие векторы. Расширьте метки в векторы во втором измерении, чтобы закодировать классы.

    labels = onehotencode(labels,2)
    labels = 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
    
    

    Каждое наблюдение в labels теперь вектор-строка с 1 в положении, соответствующем категории метки класса и 0 во всех других положениях. Функция кодирует метки в том же порядке как категории, такие что 1 в положении 1 представляет первую категорию в списке, в этом случае, 'blue'.

    Одногорячий кодируют таблицу категориальных значений.

    Составьте таблицу меток категориальных данных. Каждая строка в таблице содержит одно наблюдение.

    color = ["blue"; "red"; "blue"; "green"; "yellow"; "red"];
    color = categorical(color);
    color = table (color);

    Одногорячий кодируют таблицу меток класса.

    color = onehotencode(color)
    color=6×4 table
        blue    green    red    yellow
        ____    _____    ___    ______
    
         1        0       0       0   
         0        0       1       0   
         1        0       0       0   
         0        1       0       0   
         0        0       0       1   
         0        0       1       0   
    
    

    Каждый столбец таблицы представляет класс. Функция кодирует метки данных с 1 в столбце соответствующего класса и 0 везде еще.

    Если не все классы в данных релевантны, кодируют метки данных только с помощью подмножества классов.

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

    pets = ["dog" "fish" "cat" "dog" "cat" "bird"];

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

    animalClasses = ["bird"; "cat"; "dog"];

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

    encPets = onehotencode(pets,1,"ClassNames",animalClasses)
    encPets = 3×6
    
         0   NaN     0     0     0     1
         0   NaN     1     0     1     0
         1   NaN     0     1     0     0
    
    

    Наблюдения за классом, не существующим в списке классов, чтобы закодировать, закодированы к вектору из NaN значения.

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

    Задайте простое 15 15 пиксельная матрица сегментации меток класса.

    A = "blue";
    B = "green";
    C = "black";
    
    A = repmat(A,8,15);
    B = repmat(B,7,5);
    C = repmat(C,7,5);
    
    seg = [A;B C B];

    Преобразуйте матрицу сегментации в категориальный массив.

    seg = categorical(seg);

    Одногорячий кодируют матрицу сегментации в массив типа single. Расширьте закодированные метки в третью размерность.

    encSeg = onehotencode(seg,3,"single");

    Проверяйте размер закодированной сегментации.

    size(encSeg)
    ans = 1×3
    
        15    15     3
    
    

    Три возможных класса пикселей в матрице сегментации закодированы как векторы в третьей размерности.

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

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

    color = ["blue"; "red"; "blue"; "green"; "yellow"; "red"];
    color = categorical(color);
    
    pets = ["dog"; "fish"; "cat"; "dog"; "cat"; "bird"];
    pets = categorical(pets);
    
    location = ["USA"; "CAN"; "CAN"; "USA"; "AUS"; "USA"];
    location = categorical(location);
    
    data = table(color,pets,location)
    data=6×3 table
        color     pets    location
        ______    ____    ________
    
        blue      dog       USA   
        red       fish      CAN   
        blue      cat       CAN   
        green     dog       USA   
        yellow    cat       AUS   
        red       bird      USA   
    
    

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

    encData = table();
    
    for i=1:width(data)
     encData = [encData onehotencode(data(:,i))];
    end
    
    encData
    encData=6×11 table
        blue    green    red    yellow    bird    cat    dog    fish    AUS    CAN    USA
        ____    _____    ___    ______    ____    ___    ___    ____    ___    ___    ___
    
         1        0       0       0        0       0      1      0       0      0      1 
         0        0       1       0        0       0      0      1       0      1      0 
         1        0       0       0        0       1      0      0       0      1      0 
         0        1       0       0        0       0      1      0       0      0      1 
         0        0       0       1        0       1      0      0       1      0      0 
         0        0       1       0        1       0      0      0       0      0      1 
    
    

    Каждая строка encdata кодирует три различных категориальных класса для каждого наблюдения.

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

    свернуть все

    Массив данных помечает, чтобы закодировать в виде категориального массива, числового массива или массива строк.

    • Если A категориальный массив, элементы одногорячих закодированных векторов совпадают с тем же порядком в categories(A).

    • Если A не является категориальным массивом, необходимо задать классы, чтобы закодировать использование 'ClassNames' аргумент значения имени. Функция кодирует векторы в порядке, что классы появляются в classes.

    • Если A содержит неопределенные значения или значения, не существующие в classes, функция кодирует те значения как вектор из NaN значения. typename должен быть 'double' или 'single'.

    Типы данных: categorical

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

    • Если tblA содержит категориальные значения, элементы одногорячих закодированных векторов совпадают с порядком категорий; например, тот же порядок как categories(tbl(1,n)).

    • Если tblA не содержит категориальные значения, необходимо задать классы, чтобы закодировать использование 'ClassNames' аргумент значения имени. Функция кодирует векторы в порядке, что классы появляются в classes.

    • Если tblA содержит неопределенные значения или значения, не существующие в classes, функция кодирует те значения как NaN значения. typename должен быть 'double' или 'single'.

    Типы данных: table

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

    featureDim должен задать одноэлементную размерность A, или быть больше, чем n где n количество размерностей A.

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

    • Если вход метки классификации является категориальным массивом, числовым массивом или массивом строк, то закодированные метки возвращены как массив типа данных typename.

    • Если вход метки классификации является таблицей, то закодированные метки возвращены как таблица, где каждая запись имеет тип данных typename.

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

    Пример: 'int64'

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

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

    • Если вход A или tblA не содержит категориальные значения, затем необходимо задать classes. Можно также использовать classes аргумент, чтобы исключить любые метки класса из того, чтобы быть закодированным или закодировать векторные элементы в определенном порядке.

    • Если A или tblA содержит неопределенные значения или значения, не существующие в classes, функция кодирует те значения к вектору из NaN значения. typename должен быть 'double' или 'single'.

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

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

    свернуть все

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

    Закодированные метки, возвращенные как таблица.

    Каждая строка tblB содержит одногорячую закодированную метку для одного наблюдения, в том же порядке, как это обеспечило в tblA. Каждая строка содержит 1 в переменной, соответствующей классу метки в tlbA и 0 во всех других переменных.

    Введенный в R2020b