featrs
Feature engineering library for Rust, inspired by scikit-learn.
Built on Polars — all transformations operate natively on DataFrame and preserve column names.
Installation
[]
= "0.1"
Quick start
use *;
use *;
let mut scaler = new;
scaler.fit?;
let scaled = scaler.transform?;
Features
| Component | Description |
|---|---|
StandardScaler |
Z-score normalization (mean 0, variance 1) |
MinMaxScaler |
Scale to [0, 1] or custom range |
RobustScaler |
Scale using median and IQR (outlier-robust) |
Normalizer |
Row-wise L1, L2, or Max normalization |
OneHotEncoder |
Create binary dummy columns for categories |
LabelEncoder |
Encode labels as 0..n_classes-1 integers |
OrdinalEncoder |
Per-column category → integer encoding |
Binarizer |
Threshold-based binarization |
SimpleImputer |
Fill nulls with mean, median, mode, or constant |
PolynomialFeatures |
Generate polynomial and interaction features |
Pipeline |
Sequentially chain multiple transformers |
ColumnTransformer |
Apply different transformers to different columns |
VarianceThreshold |
Remove low-variance features |
SelectKBest |
Select top-k features by statistical test (ANOVA F) |
FeatureHasher |
Hash string features into a fixed number of buckets |
AutoTypeDetector |
Auto-detect column types and apply default transforms |
MissingIndicator |
Add binary columns marking missing values |
Lagger |
Create lag features for time-series forecasting |
RollingAggregator |
Rolling window mean, std, min, max, sum |
Difference |
Differencing and percentage change |
CyclicalEncoder |
Sin/cos encoding for cyclical features (hour, month, etc.) |
Examples
StandardScaler
use StandardScaler;
use ;
let mut scaler = new;
scaler.fit?;
let scaled = scaler.transform?;
Pipeline
use Pipeline;
use StandardScaler;
use PolynomialFeatures;
let mut pipeline = new;
pipeline.fit?;
let result = pipeline.transform?;
ColumnTransformer
use ColumnTransformer;
use Remainder;
use StandardScaler;
let ct = new;
Feature Selection
use VarianceThreshold;
use SelectKBest;
use FClassif;
let mut vt = new;
vt.fit?;
let filtered = vt.transform?;
let mut skb = new;
skb.fit?;
let selected = skb.transform?;
PolynomialFeatures
use PolynomialFeatures;
// Builder pattern (recommended)
let pf = builder
.degree
.include_bias
.interaction_only
.build;
// Or direct construction
let pf = new.include_bias;
Resources
Star History
License
MIT