onehotencode
構文
説明
は、categorical 配列 B
= onehotencode(A
,featureDim
)A
内のデータ ラベルを one-hot 符号化された配列 B
に符号化します。この関数は、featureDim
で指定された次元に沿って、A
の各要素を A
に含まれる一意のクラスの数と同じ長さの数値ベクトルに置き換えます。このベクトルでは、A
内のラベルのクラスに対応する位置に 1
が格納され、その他のすべての位置に 0
が格納されます。<undefined>
値は NaN
値に符号化されます。
___ = onehotencode(___,
は、ラベルをデータ型 typename
)typename
の数値に符号化します。この構文は、前の構文の入力引数および出力引数のいずれかと一緒に使用します。
例
ラベルから成るベクトルの one-hot 符号化
クラス ラベルから成る categorical ベクトルを、そのラベルを表す one-hot ベクトルに符号化します。
ラベルの列ベクトルを作成します。このベクトルの各行は 1 つの観測値を表します。ラベルを categorical 配列に変換します。
labels = ["red"; "blue"; "red"; "green"; "yellow"; "blue"]; labels = categorical(labels);
カテゴリの順序を表示します。
categories(labels)
ans = 4x1 cell
{'blue' }
{'green' }
{'red' }
{'yellow'}
ラベルを one-hot ベクトルに符号化します。2 番目の次元のベクトルにラベルを展開し、クラスを符号化します。
labels = onehotencode(labels,2)
labels = 6×4
0 0 1 0
1 0 0 0
0 0 1 0
0 1 0 0
0 0 0 1
1 0 0 0
labels
に含まれる各観測値は、クラス ラベルのカテゴリに対応する位置に 1
が格納され、その他のすべての位置に 0
が格納された行ベクトルになります。この関数は、1
番目にある 1
がリストの最初のカテゴリ (この場合は 'blue
') を表すように、カテゴリと同じ順序でラベルを符号化します。
table の one-hot 符号化
categorical 値から成る table を one-hot 符号化します。
categorical データ ラベルから成る table を作成します。table の各行に 1 つの観測値が格納されます。
color = ["blue"; "red"; "blue"; "green"; "yellow"; "red"]; color = categorical(color); color = table (color);
クラス ラベルの table を one-hot 符号化します。
color = onehotencode(color)
color=6×4 table
blue green red yellow
____ _____ ___ ______
1 0 0 0
0 0 1 0
1 0 0 0
0 1 0 0
0 0 0 1
0 0 1 0
table の各列がクラスを表します。この関数は、クラスに対応する列が 1
になり、その他の位置はすべて 0
になるよう、データ ラベルを符号化します。
クラスのサブセットの one-hot 符号化
目的とは関係ないクラスがデータに含まれている場合、クラスのサブセットのみを使用してデータ ラベルを符号化します。
データ ラベルの行ベクトルを作成します。このベクトルの各列は 1 つの観測値を表します。
pets = ["dog" "fish" "cat" "dog" "cat" "bird"];
符号化するクラスのリストを定義します。これらのクラスは、観測値に含まれるクラスのサブセットです。
animalClasses = ["bird"; "cat"; "dog"];
観測値を最初の次元に one-hot 符号化します。符号化するクラスを指定します。
encPets = onehotencode(pets,1,"ClassNames",animalClasses)
encPets = 3×6
0 NaN 0 0 0 1
0 NaN 1 0 1 0
1 NaN 0 1 0 0
符号化するクラスのリストに存在しないクラスの観測値は、NaN
値から成るベクトルに符号化されます。
セマンティック セグメンテーションのためのイメージの one-hot 符号化
onehotencode
を使用して、イメージのセマンティック セグメンテーションなどのクラス ラベルの行列を符号化します。
クラス ラベルから成るシンプルな 15 行 15 列のピクセル セグメンテーション行列を定義します。
A = "blue"; B = "green"; C = "black"; A = repmat(A,8,15); B = repmat(B,7,5); C = repmat(C,7,5); seg = [A;B C B];
セグメンテーション行列を categorical 配列に変換します。
seg = categorical(seg);
セグメンテーション行列を single
型の配列に one-hot 符号化します。符号化したラベルを 3 番目の次元に展開します。
encSeg = onehotencode(seg,3,"single");
符号化されたセグメンテーションのサイズを確認します。
size(encSeg)
ans = 1×3
15 15 3
セグメンテーション行列に含まれている選択可能な 3 つのピクセル クラスが、3 番目の次元にベクトルとして符号化されています。
複数の変数を含む table の one-hot 符号化
使用するデータが、型の異なる複数のクラス変数を含む table である場合、変数ごとに個別に符号化することができます。
型が異なる categorical データの複数の観測値から成る table を作成します。
color = ["blue"; "red"; "blue"; "green"; "yellow"; "red"]; color = categorical(color); pets = ["dog"; "fish"; "cat"; "dog"; "cat"; "bird"]; pets = categorical(pets); location = ["USA"; "CAN"; "CAN"; "USA"; "AUS"; "USA"]; location = categorical(location); data = table(color,pets,location)
data=6×3 table
color pets location
______ ____ ________
blue dog USA
red fish CAN
blue cat CAN
green dog USA
yellow cat AUS
red bird USA
for
ループを使用して、各 table 変数を one-hot 符号化し、符号化されたデータを含む新しい table にその結果を追加します。
encData = table(); for i=1:width(data) encData = [encData onehotencode(data(:,i))]; end encData
encData=6×11 table
blue green red yellow bird cat dog fish AUS CAN USA
____ _____ ___ ______ ____ ___ ___ ____ ___ ___ ___
1 0 0 0 0 0 1 0 0 0 1
0 0 1 0 0 0 0 1 0 1 0
1 0 0 0 0 1 0 0 0 1 0
0 1 0 0 0 0 1 0 0 0 1
0 0 0 1 0 1 0 0 1 0 0
0 0 1 0 1 0 0 0 0 0 1
encData
の各行では、各観測値に関する 3 つの異なるカテゴリカル クラスが符号化されています。
入力引数
A
— データ ラベルの配列
categorical 配列 | 数値配列 | string 配列
符号化するデータ ラベルの配列。categorical 配列、数値配列、または string 配列として指定します。
A
が categorical 配列の場合、one-hot 符号化されたベクトルの要素の順序は、categories(A)
での順序と同じになります。A が categorical 配列でない場合、名前と値の引数
'ClassNames'
を使用して、符号化するクラスを指定しなければなりません。この関数は、classes
でクラスが現れる順序でベクトルを符号化します。未定義の値、または
classes
に存在しない値がA
に含まれている場合、この関数は、それらの値をNaN
値から成るベクトルとして符号化します。typename
は'double'
または'single'
でなければなりません。
データ型: categorical
| numeric
| string
tblA
— データ ラベルの table
table
符号化するデータ ラベルの table。table として指定します。この table には、観測ごとに 1 つの変数と 1 つの行が含まれていなければなりません。各エントリには、categorical スカラー、数値スカラー、または string スカラーが含まれていなければなりません。
tblA
に categorical 値が含まれている場合、one-hot 符号化されたベクトルの要素の順序は、カテゴリの順序 (たとえばcategories(tbl(1,n))
での順序) と同じになります。tblA
に categorical 値が含まれていない場合、名前と値の引数'ClassNames'
を使用して、符号化するクラスを指定しなければなりません。この関数は、classes
でクラスが現れる順序でベクトルを符号化します。未定義の値、または
classes
に存在しない値がtblA
に含まれている場合、この関数は、それらの値をNaN
値として符号化します。typename
は'double'
または'single'
でなければなりません。
データ型: table
featureDim
— 展開する次元
正の整数
ラベルを符号化するために展開する次元。正の整数として指定します。
featureDim
は、A
に含まれる大きさが 1 の次元を指定するか、n
より大きくなければなりません。ここで、n
は A
に含まれる次元の数です。
typename
— 符号化されたラベルのデータ型
'double'
(既定値) | 文字ベクトル | string スカラー
符号化されたラベルのデータ型。文字ベクトルまたは string スカラーとして指定します。
分類ラベルの入力が、categorical 配列、数値配列、または string 配列の場合、符号化されたラベルはデータ型
typename
の配列として返されます。分類ラベルの入力が table の場合、符号化されたラベルは table として返されます。この場合、各エントリのデータ型は
typename
になります。
typename
の有効な値は、浮動小数点数、符号付き整数、符号なし整数、および logical 型です。
例: 'int64'
データ型: char
| string
classes
— 符号化するクラス
cell 配列 | string ベクトル | 数値ベクトル | 文字配列
符号化するクラス。文字ベクトルの cell 配列、string ベクトル、数値ベクトル、または 2 次元の文字配列として指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| string
| cell
出力引数
バージョン履歴
R2020b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)