Versatile
Preprocessing, linear models, decomposition, clustering, trees, neighbors, pipelines, and metrics — all with a consistent fit / transform / predict API.
Fast
Eigen's expression templates, explicit SIMD vectorization, and compile-time polymorphism. No interpreter, no GC, no runtime dispatch.
Elegant
Header-only — just drop Skigen/ next to Eigen/ and #include. The same API you know from scikit-learn, native to C++.
scikit-learn for C++
The same fit / transform / predict workflow you know from Python — compiled directly to vectorized machine code via Eigen.
pipeline.cpp
#include <Skigen/Dense>
int main() {
Eigen::MatrixXd X = Eigen::MatrixXd::Random(100, 4);
Eigen::VectorXd y = X.col(0) * 2.0 + X.col(1) * 0.5;
// scikit-learn-style pipeline
Skigen::StandardScaler scaler;
scaler.fit(X);
auto X_scaled = scaler.transform(X);
Skigen::LinearRegression model;
model.fit(X_scaled, y);
auto predictions = model.predict(X_scaled);
}0Runtime dependencies
C++23Modern standard
Header-onlyJust #include
scikit-learnAPI compatible