Main Content

countlabels

一意のラベル数のカウント

R2021a 以降

説明

機械学習や深層学習の分類問題に取り組む際に、データセットの中のラベル値の比率を調べたい場合に使用する関数です。

cnt = countlabels(lblsrc) は、lblsrc の一意のラベル カテゴリ値の数をカウントし、cnt にその数を返します。

cnt = countlabels(lblsrc,Name,Value) は、名前と値のペアを使用して追加の入力引数を指定します。たとえば、'TableVariable','Color''Color' に対応するラベルを読み取ります。

すべて折りたたむ

categorical 配列

カテゴリ ABC および D をもつ categorical 配列を生成します。配列には、各カテゴリのサンプルが含まれます。

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   

同じカテゴリをもつ 2 番目の categorical 配列を生成します。配列には、各カテゴリのサンプルと、欠損値をもつサンプルが 1 つ含まれます。

mlbls = categorical(["B" "C" "A" "D" "B" "A" missing "B" "C" "A"], ...
    ["A" "B" "C" "D"])
mlbls = 1x10 categorical
     B      C      A      D      B      A      <undefined>      B      C      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)
    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 を使用して、レート パラメーター 3 のポアソン分布から 1,000 個のランダムな整数の配列を生成します。結果のヒストグラムをプロットします。

N = 1000;
lam = 3;

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

histogram(nums)

配列で表現される整数の度数をカウントします。

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

2 つの変数をもつ文字の table を作成します。最初の変数 Type1 には、PQ および R の文字のインスタンスが格納されます。2 番目の変数 Type2 には、AB および D の文字のインスタンスが格納されます。

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

それぞれの文字が各 table 変数の中に何回出現するかカウントします。

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   

table を格納する ArrayDatastore オブジェクトを作成します。

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

それぞれの文字が各 table 変数の中に何回出現するかカウントします。

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   

入力引数

すべて折りたたむ

入力ラベル ソース。次のいずれかの値として指定します。

  • categorical ベクトル。

  • string ベクトル、または文字ベクトルの cell 配列。

  • 数値ベクトル、または数値スカラーの cell 配列。

  • logical ベクトル、または logical スカラーの cell 配列。

  • 前述のデータ型のいずれかを含む変数が格納された table。

  • 関数 readall によって前述のいずれかのデータ型で返されるデータストア。

  • 関数 readall によって前述のいずれかのデータ型で返される基のデータストアが格納された CombinedDatastore オブジェクト。この場合、ラベル値をもつ基となるデータストアのインデックスを指定しなければなりません。

lblsrc には、カテゴリの離散集合をもつベクトルに変換できるラベルを格納しなければなりません。

例: lblsrc = categorical(["B" "C" "A" "E" "B" "A" "A" "B" "C" "A"],["A" "B" "C" "D"]) は、ラベル ソースを、ABC、および D の 4 つのカテゴリをもつ 10 個のサンプルの categorical ベクトルとして作成します。

例: lblsrc = [0 7 2 5 11 17 15 7 7 11] は、ラベル ソースを 10 個のサンプルの数値ベクトルとして作成します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | table | cell | categorical

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: 'TableVariable','Sex','UnderlyingDatastoreIndex',5 は、結合されたデータストアの基になる 5 番目のデータストアでのみ 'Sex' に対応するラベルを読み取ります。

読み取る table 変数。文字ベクトルまたは string スカラーとして指定します。この引数が指定されていない場合、countlabels は最初の table 変数を使用します。

基となるデータストア インデックス。整数スカラーとして指定します。この引数は、lblsrcCombinedDatastore オブジェクトの場合に適用されます。countlabels は、lblsrcUnderlyingDatastores プロパティを使用して、取得したデータストア内のラベルをカウントします。

出力引数

すべて折りたたむ

一意のラベル カウント。次の変数を含む table として返されます。

  • Label — 一意のラベル カテゴリ値。'TableVariable' を指定する場合は、Label が table 変数名に置き換えられます。

  • Count — 各ラベル値のインスタンス数。

  • Percent — 各ラベル値の比率。パーセンテージとして表されます。

バージョン履歴

R2021a で導入