Skip to main content
Skigen

High-performance machine learning for modern C++ and Eigen.

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.

Explore the API →
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