Skip to content
v0.1.3latest release121 skills4 categories6 sub-categories247 tested scripts397 reference docsContact us

Encoder Catalog

Reference for categorical-encoding-selector · 83 lines

AI & Machine Learning / Classical Machine Learningv1.0.0Updated OCT 25 20264 references2 scripts

One-hot (indicator) encoding

One binary column per level.

  • Use: linear models, k-NN, SVM, neural nets; low/moderate cardinality.
  • scikit-learn: OneHotEncoder(handle_unknown=..., min_frequency=..., max_categories=..., drop=..., sparse_output=...).
  • pandas: pd.get_dummies only for exploration: it does not remember categories, so train and serving columns can differ.
  • Pitfalls: width explodes with cardinality; perfect collinearity without regularisation (use drop="first" or "if_binary"); trees split one level at a time (inefficient for many levels).

Ordinal encoding

One integer per level, optionally in a given order.

  • Use: ordered categories for any model; nominal categories for tree models at low cardinality.
  • OrdinalEncoder(categories=[["low", "medium", "high"]], handle_unknown="use_encoded_value", unknown_value=-1, encoded_missing_value=-1).
  • Pitfalls: for linear models a nominal column encoded as 0..k-1 imposes a fake order and spacing. LabelEncoder is for targets, not features.

Target encoding family

Replace a level by a statistic of the target for that level.

VariantFormula / idea
Mean (smoothed)(Σy + m·prior) / (n + m)
M-estimatesame with a fixed m
Empirical Bayes ("auto")shrinkage weight from within-level vs between-level variance (sklearn smooth="auto")
James-Steinshrink toward the prior by a variance-based factor
Leave-one-outexclude the row's own label: still leaks through the row count; avoid
Weight of evidence (WoE)ln(P(level
CatBoost orderedstatistics over preceding rows in a random permutation
  • Use: high cardinality with enough rows per level; all model families.
  • Must be cross-fitted (see target-encoding-and-leakage.md).
  • Multiclass: one encoded column per class (sklearn does this). Regression: mean of y (or median for robustness).

Frequency / count encoding

Replace a level by its count or share in the training data.

  • Use: high cardinality where popularity matters (merchant size, product popularity); handles unseen levels (count 0) and needs no target.
  • Pitfalls: different levels with the same count become indistinguishable; counts drift as data grows (use shares, or recompute on retrain).
python
freq = train["merchant"].value_counts(normalize=True)
X["merchant_freq"] = X["merchant"].map(freq).fillna(0.0)

Feature hashing

Hash each level into one of N buckets.

  • Use: very high or unbounded cardinality, streaming/online learning, many unseen levels.
  • FeatureHasher(n_features=2**10, input_type="string") (needs a list of lists of strings per row).
  • Pitfalls: collisions (choose N so collisions are rare for frequent levels); not invertible (hard to explain).

Binary / base-N encoding

Ordinal code written in binary digits (log2(k) columns). Compact but arbitrary; rarely better than target or frequency encoding. Available in category_encoders.

Entity embeddings

Learned dense vectors per level (neural nets), optionally reused as features in GBMs. Useful for very high cardinality with lots of data (users, products). Requires a training pipeline; overkill for most tabular projects.

Hierarchical / prefix encoding

For codes with structure: zip -> zip3 -> state; NAICS 6 -> 4 -> 2 digits; ICD-10 code -> category -> chapter. Encode each level of the hierarchy (one-hot for coarse, target for fine) so rare fine levels borrow strength from their parent.

Missing values as a level

For one-hot and target encoding, replace missing with an explicit "missing" level before encoding (or let the encoder handle NaN: OneHotEncoder treats NaN as a category since 1.0; TargetEncoder treats it as its own category). GBMs handle missing natively.

Quick reference: scikit-learn parameters

EncoderKey parameters
OneHotEncoderhandle_unknown ("error", "ignore", "infrequent_if_exist", "warn" in 1.6+), min_frequency, max_categories, drop, sparse_output
OrdinalEncodercategories, handle_unknown="use_encoded_value", unknown_value, encoded_missing_value, min_frequency, max_categories
TargetEncodertarget_type ("auto", "binary", "multiclass", "continuous"), smooth ("auto" or float), cv (int or splitter)
FeatureHashern_features, input_type ("dict", "pair", "string"), alternate_sign
More in Classical Machine Learning

anomaly-detection-model-builder

Build and evaluate anomaly detection for tabular, sensor and transaction data with few or no labels: define the anomaly type (point, contextual, collective), choose detectors (robust z-score/MAD and IQR rules, Mahalanobis with robust covariance, k-NN distance, LOF, Isolation Forest, one-class SVM, PCA reconstruction / autoencoders, forecasting residuals for time series), combine them by rank, explain each alert by its deviating features, set thresholds from an alert budget or the score distribution, and evaluate with precision@k, PR-AUC and recall on known incidents, or detector agreement when no labels exist. Includes pure-Python detectors (robust z, Mahalanobis, kNN, Isolation Forest, ensemble) and an evaluation script.

catboost-model-builder

Build CatBoost models that use its strengths correctly: raw categorical columns as cat_features (ordered target statistics, no manual encoding), text_features, Pool construction with NaN-safe categories, ordered boosting and has_time for temporal data, symmetric (oblivious) trees, overfitting detector with eval_set and use_best_model, losses for classification, regression (Quantile, Poisson, Tweedie) and ranking (YetiRank), class weights, monotone constraints, feature importance (PredictionValuesChange, LossFunctionChange) and SHAP values, GPU training and model export. Plans cat/text/numeric columns from a CSV and generates a runnable training script, and checks parameter sets for the conflicts CatBoost rejects (iterations vs n_estimators, Bayesian bootstrap with subsample, multiple class-weight options, depth > 16, use_best_model without eval_set).

classification-model-selector

Choose the right classification algorithm for tabular, text or mixed data and prove the choice with a fair bake-off: logistic regression (L2, L1, elastic net), linear SVM, naive Bayes, k-NN, RBF SVM, decision trees, random forest, extra trees, HistGradientBoosting, LightGBM, XGBoost, CatBoost, explainable boosting machines (EBM/GAM), points scorecards and MLPs, matched to data size, width, categorical and high-cardinality share, missingness, class imbalance, text, and constraints such as interpretability, monotonic constraints, calibrated probabilities, latency budgets and tiny deployable models. Ranks candidates with starting hyperparameters and cautions, then generates a bake-off script running every candidate on identical CV folds with per-fold metrics, fit time and prediction latency.

clustering-algorithm-selector

Choose the right clustering algorithm and check that clustering makes sense at all: cluster tendency (Hopkins statistic with a correlated-features caveat, nearest-neighbour isolation), then k-means / MiniBatchKMeans, Gaussian mixtures with BIC, agglomerative (Ward, average, complete, single) with dendrograms, DBSCAN, HDBSCAN, OPTICS, spectral clustering, BIRCH, mean shift, k-prototypes and k-modes for mixed or categorical data, and Gower distance, matched to data size, expected shapes, noise, varying density, known k, soft memberships, hierarchy and streaming. Covers preprocessing (scaling, encoding, dimensionality, distance metrics), validation (internal indices, bootstrap stability, external labels, business profiling) and assigning new points.

collaborative-filtering-implementer

Implement collaborative filtering recommenders that beat popularity: item-based kNN with cosine, Jaccard or asymmetric similarity, shrinkage, neighbourhood size, positive-only or mean-centred rating signals and 'because you liked X' explanations; implicit ALS with confidence weighting, BPR pairwise ranking and the closed-form EASE model in plain NumPy, tuned on a temporal validation split by recall@k and NDCG@k and refit on all data; plus user-kNN, explicit matrix factorisation, the implicit/LightFM libraries, hyperparameter ranges, cold-start fallbacks, scaling with sparse matrices and approximate nearest neighbours. Produces top-k lists in the format of the recommendation evaluator.

counterfactual-explanation-generator

Generate counterfactual explanations and algorithmic recourse: the smallest realistic change to a row's features that changes the model's decision. Solves exact minimal-cost recourse for linear and logistic models (MAD-scaled L1 cost, immutable features, increase/decrease directions, bounds, integer and binary features, diverse alternatives, features every counterfactual must change, and a no-recourse finding when immutable features decide), generates DiCE counterfactuals for any scikit-learn model with constraints turned into permitted ranges and every result re-predicted, and validates counterfactuals from any method for constraint violations, implausible values, off-manifold rows, broken derived-feature relations and failure to flip the prediction.