exponenta event banner

countlabels

Количество уникальных меток

Описание

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

пример

cnt = countlabels(lblsrc) подсчитывает количество уникальных значений категорий меток в lblsrc и возвращает число в cnt.

пример

cnt = countlabels(lblsrc,Name,Value) задает дополнительные входные аргументы с использованием пар имя-значение. Например, 'TableVariable','Color' считывает метки, соответствующие 'Color'.

Примеры

свернуть все

Категориальные массивы

Создание категориального массива с категориями A, B, C, и D. Массив содержит образцы каждой категории.

lbls = categorical(["B" "C" "A" "D" "B" "A" "A" "B" "C" "A"], ...
    ["A" "B" "C" "D"])
lbls = 1x10 categorical
     B      C      A      D      B      A      A      B      C      A 

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

cnt = countlabels(lbls)
cnt=4×3 table
    Label    Count    Percent
    _____    _____    _______

      A        4        40   
      B        3        30   
      C        2        20   
      D        1        10   

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

mlbls = categorical(["B" "C" "A" "D" "B" "A" missing "B" "C" "A"], ...
    ["A" "B" "C" "D"])
mlbls = 1x10 categorical
  Columns 1 through 9

     B      C      A      D      B      A      <undefined>      B      C 

  Column 10

     A 

Подсчитать количество уникальных значений категорий меток в массиве. Образец с отсутствующим значением включается в подсчет как <undefined>.

mcnt = countlabels(mlbls)
mcnt=5×3 table
       Label       Count    Percent
    ___________    _____    _______

    A                3        30   
    B                3        30   
    C                2        20   
    D                1        10   
    <undefined>      1        10   

Массивы символов

Читайте сонеты Уильяма Шекспира с fileread функция. Удалите все неальфабетические символы из текста и преобразуйте их в строчные.

sonnets = fileread("sonnets.txt");
letters = lower(sonnets(regexp(sonnets,"[A-z]")))';

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

cnt = countlabels(letters);
cnt = sortrows(cnt,"Count","descend");
head(cnt)
ans=8×3 table
    Label    Count    Percent
    _____    _____    _______

      e      9028     12.298 
      t      7210     9.8216 
      o      5710     7.7782 
      h      5064     6.8982 
      s      4994     6.8029 
      a      4940     6.7293 
      i      4895      6.668 
      n      4522     6.1599 

Числовые массивы

Используйте poisrand функция для генерации массива из 1000 случайных целых чисел из распределения Пуассона с параметром скорости 3. Постройте гистограмму результатов.

N = 1000;
lam = 3;

nums = zeros(N,1);
for jk = 1:N
    nums(jk) = poisrand(lam);
end

histogram(nums)

Figure contains an axes. The axes contains an object of type histogram.

Подсчитайте частоты целых чисел, представленных в массиве.

mm = countlabels(nums)
mm=10×3 table
    Label    Count    Percent
    _____    _____    _______

     0         36       3.6  
     1        153      15.3  
     10         1       0.1  
     2        211      21.1  
     3        213      21.3  
     4        184      18.4  
     5        114      11.4  
     6         58       5.8  
     7         20         2  
     8         10         1  

function num = poisrand(lam)
% Poisson random integer using rejection method
    p = 0;
    num = -1;
    while p <= lam
        p = p - log(rand);
        num = num + 1;
    end
end

Создайте таблицу символов с двумя переменными. Первая переменная Type1 содержит экземпляры букв P, Q и R. Вторая переменная Type2 содержит экземпляры букв A, B и D.

tbl = table(["P" "R" "P" "Q" "Q" "Q" "R" "P"]', ...
    ["A" "B" "B" "A" "D" "D" "A" "A"]',...
    'VariableNames',["Type1","Type2"]);

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

cnt = countlabels(tbl,'TableVariable','Type1')
cnt=3×3 table
    Type1    Count    Percent
    _____    _____    _______

      P        3       37.5  
      Q        3       37.5  
      R        2         25  

cnt = countlabels(tbl,'TableVariable','Type2')
cnt=3×3 table
    Type2    Count    Percent
    _____    _____    _______

      A        4        50   
      B        2        25   
      D        2        25   

Создать ArrayDatastore объект, содержащий таблицу.

ads = arrayDatastore(tbl,'OutputType','same');

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

cnt = countlabels(ads,'TableVariable','Type1')
cnt=3×3 table
    Type1    Count    Percent
    _____    _____    _______

      P        3       37.5  
      Q        3       37.5  
      R        2         25  

cnt = countlabels(ads,'TableVariable','Type2')
cnt=3×3 table
    Type2    Count    Percent
    _____    _____    _______

      A        4        50   
      B        2        25   
      D        2        25   

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

свернуть все

Источник входной метки, указанный как один из следующих:

  • Категориальный вектор.

  • Строковый вектор или клеточный массив символьных векторов.

  • Числовой вектор или клеточный массив числовых скаляров.

  • Логический вектор или клеточный массив логических скаляров.

  • Таблица с переменными, содержащая любой из предыдущих типов данных.

  • Хранилище данных, readall функция возвращает любой из предыдущих типов данных.

  • A CombinedDatastore объект, содержащий нижележащее хранилище данных, readall функция возвращает любой из предыдущих типов данных. В этом случае необходимо указать индекс базового хранилища данных со значениями метки.

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

Пример: lblsrc = categorical(["B" "C" "A" "E" "B" "A" "A" "B" "C" "A"],["A" "B" "C" "D"]) создает источник метки в виде категориального вектора из десяти выборок с четырьмя категориями: A, B, C, и D.

Пример: lblsrc = [0 7 2 5 11 17 15 7 7 11] создает источник метки в виде числового вектора из десяти образцов.

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

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'TableVariable','Sex','UnderlyingDatastoreIndex',5 считывает метки, соответствующие 'Sex' только в пятом базовом хранилище данных объединенного хранилища данных.

Переменная таблицы для чтения, заданная как вектор символа или скаляр строки. Если этот аргумент не указан, то countlabels использует первую табличную переменную.

Базовый индекс хранилища данных, заданный как целочисленный скаляр. Этот аргумент применяется, когда lblsrc является CombinedDatastore объект. countlabels подсчитывает метки в хранилище данных, полученные с помощью UnderlyingDatastores имущество lblsrc.

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

свернуть все

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

  • Label - Уникальные значения категорий меток. Если 'TableVariable' указывается, то Label имя заменяется именем переменной таблицы.

  • Count - количество экземпляров каждого значения метки.

  • Percent - Доля каждого значения метки, выраженная в процентах.

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