splitlabels
構文
説明
この関数は、機械学習または深層学習の分類問題の作業において、ラベル値の比率を維持したまま、データセットを学習セット、テスト セット、および検証セットに分割する場合に使用します。
は、名前と値のペアを使用して追加の入力引数を指定します。たとえば、idxs
= splitlabels(___,Name,Value
)'UnderlyingDatastoreIndex',3
は、統合されたデータストアのうち、基となる 3 番目のデータストアでのみラベルを分割します。
例
関数 fileread
でウィリアム・シェイクスピアのソネット集を読み取ります。テキストからすべての母音を抽出し、小文字に変換します。
sonnets = fileread("sonnets.txt"); vowels = lower(sonnets(regexp(sonnets,"[AEIOUaeiou]")))';
各母音のインスタンスの数を数えます。
cnts = countlabels(vowels)
cnts=5×3 table
Label Count Percent
_____ _____ _______
a 4940 18.368
e 9028 33.569
i 4895 18.201
o 5710 21.232
u 2321 8.6302
各母音の 500 インスタンスが学習セット、300 インスタンスが検証セット、残りがテスト セットとなるように母音を分割します。最初の 2 つのセットではすべての母音が同じ重みで表されますが、3 番目のセットではそうなりません。
spltn = splitlabels(vowels,[500 300]); for kj = 1:length(spltn) cntsn{kj} = countlabels(vowels(spltn{kj})); end cntsn{:}
ans=5×3 table
Label Count Percent
_____ _____ _______
a 500 20
e 500 20
i 500 20
o 500 20
u 500 20
ans=5×3 table
Label Count Percent
_____ _____ _______
a 300 20
e 300 20
i 300 20
o 300 20
u 300 20
ans=5×3 table
Label Count Percent
_____ _____ _______
a 4140 18.083
e 8228 35.94
i 4095 17.887
o 4910 21.447
u 1521 6.6437
50% のインスタンスが学習セット、他の 30% のインスタンスが検証セット、残りがテスト セットとなるように母音を分割します。すべての母音が 3 つのセット全体で同じ重みで表されます。
spltp = splitlabels(vowels,[0.5 0.3]); for kj = 1:length(spltp) cntsp{kj} = countlabels(vowels(spltp{kj})); end cntsp{:}
ans=5×3 table
Label Count Percent
_____ _____ _______
a 2470 18.367
e 4514 33.566
i 2448 18.203
o 2855 21.23
u 1161 8.6333
ans=5×3 table
Label Count Percent
_____ _____ _______
a 1482 18.371
e 2708 33.569
i 1468 18.198
o 1713 21.235
u 696 8.6277
ans=5×3 table
Label Count Percent
_____ _____ _______
a 988 18.368
e 1806 33.575
i 979 18.2
o 1142 21.231
u 464 8.6261
関数 fileread
でウィリアム・シェイクスピアのソネット集を読み取ります。テキストからアルファベット以外の文字をすべて削除し、小文字に変換します。
sonnets = fileread("sonnets.txt"); letters = lower(sonnets(regexp(sonnets,"[A-z]")))';
文字を子音または母音として分類し、結果を含むテーブルを作成します。表の最初の数行を表示します。
type = repmat("consonant",size(letters)); type(regexp(letters',"[aeiou]")) = "vowel"; T = table(letters,type,'VariableNames',["Letter" "Type"]); head(T)
Letter Type ______ ___________ t "consonant" h "consonant" e "vowel" s "consonant" o "vowel" n "consonant" n "consonant" e "vowel"
各カテゴリのインスタンスの数を表示します。
cnt = countlabels(T,'TableVariable',"Type")
cnt=2×3 table
Type Count Percent
_________ _____ _______
consonant 46516 63.365
vowel 26894 36.635
テーブルを 2 つのセットに分割します。子音と母音について、一方が 60% を、もう一方が 40% を含むようにします。各カテゴリのインスタンスの数を表示します。
splt = splitlabels(T,0.6,'TableVariable',"Type"); sixty = countlabels(T(splt{1},:),'TableVariable',"Type")
sixty=2×3 table
Type Count Percent
_________ _____ _______
consonant 27910 63.366
vowel 16136 36.634
forty = countlabels(T(splt{2},:),'TableVariable',"Type")
forty=2×3 table
Type Count Percent
_________ _____ _______
consonant 18606 63.363
vowel 10758 36.637
テーブルを 2 つのセットに分割します。特定の各文字について、一方が 60% を、もう一方が 40% を含むようにします。子音として機能することもあれば母音として機能することもある文字 "y" は除外します。各カテゴリのインスタンスの数を表示します。
splt = splitlabels(T,0.6,'Exclude',"y"); sixti = countlabels(T(splt{1},:),'TableVariable',"Type")
sixti=2×3 table
Type Count Percent
_________ _____ _______
consonant 26719 62.346
vowel 16137 37.654
forti = countlabels(T(splt{2},:),'TableVariable',"Type")
forti=2×3 table
Type Count Percent
_________ _____ _______
consonant 17813 62.349
vowel 10757 37.651
テーブルを同じサイズの 2 つのセットに分割します。"e" と "s" の文字のみを含めます。セットをランダム化します。
halves = splitlabels(T,0.5,'randomized','Include',["e" "s"]); cnt = countlabels(T(halves{1},:))
cnt=2×3 table
Letter Count Percent
______ _____ _______
e 4514 64.385
s 2497 35.615
100 個のガウス乱数で構成されるデータセットを作成します。数字の 40 個に A
、30 個に B
、および 30 個に C
のラベルを付けます。2 つのデータストアを含む統合されたデータストアにデータを保存します。最初のデータストアにはデータがあり、2 番目のデータストアにはラベルが格納されています。
dsData = arrayDatastore(randn(100,1)); dsLabels = arrayDatastore([repmat("A",40,1); ... repmat("B",30,1); repmat("C",30,1)]); dsDataset = combine(dsData,dsLabels); cnt = countlabels(dsDataset,UnderlyingDatastoreIndex=2)
cnt=3×3 table
Label Count Percent
_____ _____ _______
A 40 40
B 30 30
C 30 30
データ セットを 2 つのセットに分割します。一方が数字の 60% を含み、もう一方が残りを含むようにします。
splitIndices = splitlabels(dsDataset,0.6,UnderlyingDatastoreIndex=2); dsDataset1 = subset(dsDataset,splitIndices{1}); cnt1 = countlabels(dsDataset1,UnderlyingDatastoreIndex=2)
cnt1=3×3 table
Label Count Percent
_____ _____ _______
A 24 40
B 18 30
C 18 30
dsDataset2 = subset(dsDataset,splitIndices{2}); cnt2 = countlabels(dsDataset2,UnderlyingDatastoreIndex=2)
cnt2=3×3 table
Label Count Percent
_____ _____ _______
A 16 40
B 12 30
C 12 30
入力引数
入力ラベル ソース。次のいずれかの値として指定します。
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"])
は、ラベル ソースを、A
、B
、C
、および 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
ラベルの比率またはラベルの数。整数スカラー、(0, 1) の範囲のスカラー、整数のベクトル、または分数のベクトルとして指定します。
p
がスカラーの場合、splitlabels
は 2 つの分割インデックス セットを求め、idxs
で 2 要素の cell 配列を返します。p
が整数の場合、idxs
の最初の要素には、各ラベル カテゴリの最初のp
個の値を指すインデックスのベクトルが格納されます。idxs
の 2 番目の要素には、各ラベル カテゴリの残りの値を指すインデックスが格納されます。p
が (0, 1) の範囲の値であり、lblsrc
の i 番目のカテゴリに Ki 個の要素がある場合、idxs
の最初の要素には、各ラベル カテゴリの最初のp
× Ki 個の値を指すインデックスのベクトルが格納されます。idxs
の 2 番目の要素には、各ラベル カテゴリの残りの値のインデックスが格納されます。
p
が p1, p2, …, pN の形式の N 個の要素をもつベクトルの場合、splitlabels
は N + 1 個の分割インデックス セットを求め、idxs
内の (N + 1) 個の要素の cell 配列を返します。p
が整数のベクトルである場合、idxs
の最初の要素は各ラベル カテゴリの最初の p1 個の値を指すインデックスのベクトルであり、idxs
の次の要素には各ラベル カテゴリの次の p2 個の値が格納され、以降も同様になります。idxs
の最後の要素には、各ラベル カテゴリの残りのインデックスが格納されます。p
が分数のベクトルで、lblsrc
に i 番目のカテゴリの Ki 個の要素がある場合、idxs
の最初の要素は各カテゴリの最初の p1 × Ki 個の値を連結するインデックスのベクトルであり、idxs
の次の要素には各ラベル カテゴリの次の p2 × Ki 個の値が格納され、以降も同様になります。idxs
の最後の要素には、各ラベル カテゴリの残りのインデックスが格納されます。
メモ
p
が分数を含む場合、その要素の合計が 1 を超えてはなりません。p
がラベル値の数を含む場合、その要素の合計は、いずれかのラベル カテゴリで使用可能なラベルの最小数を超えてはなりません。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name
を引用符で囲みます。
例: 'TableVariable',"AreaCode",'Exclude',["617" "508"]
は、電話の市外局番に基づいてラベルを分割し、ボストンとネイティックの番号を除外することを関数に指定します。
インデックス セットに含めるラベル。ラベル カテゴリのベクトルまたはラベル カテゴリの cell 配列として指定します。この引数で指定するカテゴリは、lblsrc
のラベルと型が同じでなければなりません。ベクトルまたは cell 配列の各カテゴリは、lblsrc
のラベル カテゴリの 1 つと一致しなければなりません。
インデックス セットから除外するラベル。ラベル カテゴリのベクトルまたはラベル カテゴリの cell 配列として指定します。この引数で指定するカテゴリは、lblsrc
のラベルと型が同じでなければなりません。ベクトルまたは cell 配列の各カテゴリは、lblsrc
のラベル カテゴリの 1 つと一致しなければなりません。
読み取る table 変数。文字ベクトルまたは string スカラーとして指定します。この引数が指定されていない場合、splitlabels
は最初の table 変数を使用します。
基となるデータストア インデックス。整数スカラーとして指定します。この引数は、lblsrc
が CombinedDatastore
オブジェクトの場合に適用されます。splitlabels
は、lblsrc
の UnderlyingDatastores
プロパティを使用して、取得したデータストア内のラベルをカウントします。
出力引数
分割インデックス。cell 配列として返されます。
バージョン履歴
R2021a で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)