Skip to main content

LabelEncoder

#include <Skigen/Preprocessing>

template <typename Label = int>
class Skigen::LabelEncoder

Encode target labels with value between 0 and n_classes − 1.

This transformer encodes integer labels as contiguous zero-based indices. It is useful as a utility to normalize labels.

Mirrors sklearn.preprocessing.LabelEncoder for integer-typed labels.


Attributes:

  • is_fitted : bool Whether the encoder has been fitted.

  • classes : const std::vector< Label > & Unique class labels sorted in ascending order.

  • n_classes : Eigen::Index Number of unique classes.


Methods

fit(y)

Fit the label encoder by discovering unique classes.

Parameters:

  • y : VectorType Label vector of shape (n_samples,).

Returns:

  • result : LabelEncoder Reference to the fitted encoder (*this).

transform(y)

Transform labels to normalized encoding.

Parameters:

  • y : VectorType Label vector of shape (n_samples,).

Returns:

  • result : IndexVector Integer vector of encoded labels [0, n_classes).

Throws:

  • std::runtime_error — if the encoder has not been fitted.
  • std::invalid_argument — if y contains unseen labels.

fit_transform(y)

Fit the encoder and return transformed labels.

Equivalent to fit(y).transform(y) but more convenient.

Parameters:

  • y : VectorType Label vector of shape (n_samples,).

Returns:

  • result : IndexVector Integer vector of encoded labels [0, n_classes).

inverse_transform(y)

Transform encoded labels back to original labels.

Parameters:

  • y : IndexVector Integer vector of encoded labels.

Returns:

  • result : VectorType Original label vector of shape (n_samples,).

Throws:

  • std::runtime_error — if the encoder has not been fitted.
  • std::invalid_argument — if y contains indices out of range.

Example

Skigen::LabelEncoder<int> encoder;
auto encoded = encoder.fit_transform(labels);

std::cout << "Encoded: " << encoded.transpose() << "\n";
std::cout << "Classes: ";
for (auto c : encoder.classes()) std::cout << c << " ";
std::cout << "\n";
std::cout << "n_classes: " << encoder.n_classes() << "\n\n";

// Inverse transform — recover original labels
auto decoded = encoder.inverse_transform(encoded);
std::cout << "Decoded: " << decoded.transpose() << "\n";