Skip to main content

Getting Started

Requirements

  • C++23 compiler (GCC ≥ 13, Clang ≥ 17, MSVC ≥ 19.38)
  • Eigen ≥ 3.4
  • CMake ≥ 3.20 (for tests/examples)

Installation

Skigen is header-only. Clone it alongside Eigen and point your include path at the repository root:

git clone https://github.com/skigen-project/skigen.git
find_package(Eigen3 3.4 REQUIRED)

add_subdirectory(skigen) # or use find_package if installed

target_link_libraries(my_app PRIVATE Skigen::skigen)

Manual

Add both the skigen repo root and your Eigen path to your compiler includes:

g++ -std=c++23 -I/path/to/skigen -I/path/to/eigen my_app.cpp -o my_app

Your First Program

#include <Eigen/Dense>
#include <Skigen/Dense>
#include <iostream>

int main() {
// Create a dataset
Eigen::MatrixXd X(5, 3);
X << 1, -1, 2,
2, 0, 0,
0, 1, -1,
1, 1, 1,
3, -1, 0;

// Standardize (zero mean, unit variance)
Skigen::StandardScaler scaler;
Eigen::MatrixXd Z = scaler.fit_transform(X);

std::cout << "Standardized:\n" << Z << "\n\n";
std::cout << "Mean: " << scaler.mean() << "\n";
std::cout << "Scale: " << scaler.scale() << "\n";

// Round-trip back to original
Eigen::MatrixXd X_back = scaler.inverse_transform(Z);
std::cout << "\nRecovered:\n" << X_back << "\n";

return 0;
}

Build & Run Tests

cd skigen
cmake -B build -DSKIGEN_BUILD_TESTS=ON
cmake --build build
./build/tests/skigen_tests