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   

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

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   

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

свернуть все

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

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

  • Строковый вектор или массив ячеек из векторов символов.

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

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

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

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

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

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' только в пятом базовом datastore комбинированного datastore.

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

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

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

свернуть все

Уникальные счетчики меток, возвращенные как таблица с этими переменными:

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

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

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

Введенный в R2021a