# onehotdecode

Decode probability vectors into class labels

## Syntax

``A = onehotdecode(B,classes,featureDim)``
``A = onehotdecode(B,classes,featureDim,typename)``

## Description

example

````A = onehotdecode(B,classes,featureDim)` decodes probability vectors in `B` to the most probable class label from the labels specified by `classes`. `featureDim` specifies the dimension along which the probability vectors are defined. The probability vectors are decoded into class labels by matching the position of the highest value in the vector with the class label in the corresponding position in `classes`. Each probability vector in `A` is replaced with the value of `classes` that corresponds to the highest value in the probability vector. ```

example

````A = onehotdecode(B,classes,featureDim,typename)` decodes the probabilities into class labels of data type `typename`.```

## Examples

collapse all

Use the `onehotencode` and `onehotdecode` functions to encode a set of labels into probability vectors and decode them back into labels.

Create a vector of categorical labels.

```colorsOriginal = ["red"; "blue"; "red"; "green"; "yellow"; "blue"]; colorsOriginal = categorical(colorsOriginal)```
```colorsOriginal = 1×6 categorical red blue red green yellow blue ```

Determine the classes in the categorical vector.

`classes = categories(colorsOriginal);`

One-hot encode the labels into probability vectors, using the `onehotencode` function. Encode the probability vectors into the first dimension.

`colorsEncoded = onehotencode(colorsOriginal,1)`
```colorsEncoded = 4×6 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 ```

Use `onehotdecode` to decode the probability vectors.

`colorsDecoded = onehotdecode(colorsEncoded,classes,1)`
```colorsDecoded = 1×6 categorical red blue red green yellow blue ```

The decoded labels match the original labels.

Use `onehotdecode` to decode a set of probability vectors into the most probable class for each observation.

Create a set of ten random probability vectors. The vectors express the probability that an observation belongs to one of five classes.

```numObs = 10; numClasses = 5; prob = rand(numObs,numClasses); tot = sum(prob,2); prob = prob./tot;```

Define the set of five classes.

`classes = ["Red" "Yellow" "Green" "Blue" "Purple"];`

Decode the probabilities into the most-probable classes. The probability vectors are encoded into the second dimension, so specify the dimension containing encoded probabilities as `2`. Obtain the most probable classes as a vector of strings.

`result = onehotdecode(prob,classes,2,"string")`
```result = 10×1 string "Green" "Blue" "Red" "Green" "Red" "Blue" "Purple" "Green" "Yellow" "Blue" ```

## Input Arguments

collapse all

Probability vectors to decode, specified as a numeric array.

Values in `B` must be between `0` and `1`. If a probability vector in `B` contains `NaN` values, then that observation is decoded to the class that has the largest probability that is not `NaN`. If an observation contains only `NaN` values, then that observation is decoded to the first class label in `classes`.

Data Types: `single` | `double`

Classes, specified as a cell array of character vectors, a string vector, a numeric vector, or a two-dimensional char array.

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `string` | `cell`

Dimension containing probability vectors, specified as a positive integer.

Use `featureDim` to specify the dimension in `B` that contains the probability vectors. Each vector in `B` along the specified dimension is replaced by the element of `classes` in the same position as the highest value along the vector.

The dimension of `B` specified by `featureDim` must have length equal to the number of classes specified by `classes`.

Data type of decoded labels, specified as a character vector or a string scalar.

Valid values of `typename` are `'categorical'`, `'string'` and numeric types such as `'single'` and `'int64'`. If you specify a numeric type, `classes` must be a numeric vector.

Example: `'double'`

Data Types: `char` | `string`

## Output Arguments

collapse all

Decoded class labels, returned as a categorical array, a string array, or a numeric array.