🧠 ml_feature_encoder

A lightweight and pure Dart library for encoding categorical variables using Label Encoding and One-Hot Encoding – essential for machine learning data preprocessing.


✨ Features

  • βœ… Label Encoding for string/categorical data
  • βœ… One-Hot Encoding with inverse transform
  • βœ… handleUnknown support for unseen values
  • βœ… Clean API: fit(), transform(), inverseTransform()
  • βœ… Inspired by scikit-learn
  • βœ… Fully tested and documented

πŸš€ Installation

Add the following to your pubspec.yaml:

dependencies:
  ml_feature_encoder: ^0.1.0

Then run:

dart pub get

πŸ“¦ Usage

import 'package:ml_feature_encoder/encoders/label_encoder.dart';
import 'package:ml_feature_encoder/encoders/one_hot_encoder.dart';

void main() {
  // LabelEncoder example
  final labelEncoder = LabelEncoder();
  labelEncoder.fit(['cat', 'dog', 'fish']);
  final encoded = labelEncoder.transform(['dog', 'cat']);
  final decoded = labelEncoder.inverseTransform(encoded);
  print('Encoded: $encoded');
  print('Decoded: $decoded');

  // OneHotEncoder example
  final oneHotEncoder = OneHotEncoder(handleUnknown: true);
  oneHotEncoder.fit(['red', 'green', 'blue']);
  final oneHot = oneHotEncoder.transform(['green', 'yellow']);
  print('One-hot: $oneHot');
}

βœ… Example Output

Encoded: [1, 0]
Decoded: [dog, cat]

One-hot: [
  [0, 1, 0],
  [0, 0, 0]  // unknown 'yellow'
]

πŸ“‚ Directory Structure

lib/
  β”œβ”€β”€ encoders/
  β”‚   β”œβ”€β”€ label_encoder.dart
  β”‚   └── one_hot_encoder.dart
  └── ml_feature_encoder.dart

test/
  β”œβ”€β”€ label_encoder_test.dart
  └── one_hot_encoder_test.dart

example/
  └── main.dart

πŸ›‘ License

MIT Β© Mehmet Γ‡elik


πŸ“£ Contributions

Issues, suggestions, and PRs are welcome! Feel free to improve this library or report a bug.

Libraries

encoders/label_encoder
encoders/one_hot_encoder
ml_feature_encoder
ml_feature_encoder.dart Unified entry point for the ml_feature_encoder package. Exports LabelEncoder and OneHotEncoder classes.
models/encoder_model
utils/data_validator