# sklears-semi-supervised
[](https://crates.io/crates/sklears-semi-supervised)
[](https://docs.rs/sklears-semi-supervised)
[](../../LICENSE)
[](https://www.rust-lang.org)
> **Latest release:** `0.2.0` (July 14, 2026). See the [workspace release notes](../../docs/releases/0.2.0.md) for highlights and upgrade guidance.
## Overview
`sklears-semi-supervised` implements semi-supervised learning algorithms that align with scikit-learn’s API, covering label propagation, self-training, and graph-based methods.
## Key Features
- **Algorithms**: LabelPropagation, LabelSpreading, SelfTrainingClassifier, co-training/tri-training, and graph-based methods (harmonic functions, local/global consistency, manifold regularization).
- **Graph Support**: Efficient knn graph construction, similarity kernels, and Rayon-parallelized graph algorithms (`parallel_graph`) with SIMD-accelerated distance kernels (`simd_distances`) for large graphs.
- **Pipeline Integration**: Works with datasets containing missing labels and plugs into sklears pipelines.
- **Monitoring**: Built-in tracking for convergence diagnostics and label confidence scores.
## Quick Start
```rust
use sklears_semi_supervised::LabelSpreading;
use sklears_core::traits::{Fit, Predict};
use scirs2_core::ndarray::{array, Array1};
let x = array![
[0.0, 1.0],
[1.0, 0.0],
[1.0, 1.0],
[0.5, 0.2],
];
let y = Array1::from(vec![0, 1, -1, -1]); // -1 denotes unlabeled
let model = LabelSpreading::new()
.kernel("rbf".to_string())
.gamma(0.5)
.max_iter(100)
.tol(1e-3);
let fitted = model.fit(&x.view(), &y.view())?;
let inferred = fitted.predict(&x.view())?;
```
## Status
- Exercised by 356 passing tests in `0.2.0` (Stable).
- Broad coverage of scikit-learn's semi-supervised module (label propagation/spreading, self-training) plus additional graph-based methods (harmonic functions, co/tri-training, manifold regularization) not present upstream.
- Graph algorithms are CPU-parallelized (Rayon) and SIMD-accelerated; no GPU backend is implemented in this crate.
- Additional experiments (semi-supervised regression, curriculum learning) tracked in `TODO.md`.