countlabels

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

Описание

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

пример

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

пример

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

Примеры

свернуть все

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

Сгенерируйте категориальный массив с категориями ABC, и 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 функция, чтобы сгенерировать массив 1 000 случайных целых чисел от распределения Пуассона параметром уровня 3. Постройте гистограмму результатов.

N = 1000;
lam = 3;

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

histogram(nums)

Figure contains an axes object. The axes object 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   

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

свернуть все

Введите источник метки в виде одного из них:

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

  • Вектор строки или массив ячеек из символьных векторов.

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

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

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

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

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

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

Пример: lblsrc = categorical(["B" "C" "A" "E" "B" "A" "A" "B" "C" "A"],["A" "B" "C" "D"]) создает источник метки как категориальный вектор с десятью выборками с четырьмя категориями: ABC, и 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 имя аргумента и 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