fastcan: A fast canonical-correlation-based search algorithm#
fastcan is a search algorithm that supports:
Feature selection
Supervised
Unsupervised
Multioutput
Term selection for time series regressors (e.g., NARX models)
Data pruning (i.e., sample selection)
Key advantages:
Extremely fast – Designed for high performance, even with large datasets
Redundancy-aware – Effectively handles feature or sample redundancy to select the most informative subset
Multioutput – Natively supports matrix-valued targets for multioutput tasks
Check Home Page for more information.
Installation#
Install fastcan via PyPi:
Run
pip install fastcan
Or via conda-forge:
Run
conda install -c conda-forge fastcan
Getting Started#
>>> from fastcan import FastCan
>>> X = [[ 0.87, -1.34, 0.31 ],
... [-2.79, -0.02, -0.85 ],
... [-1.34, -0.48, -2.55 ],
... [ 1.92, 1.48, 0.65 ]]
>>> # Multioutput feature selection
>>> y = [[0, 0], [1, 1], [0, 0], [1, 0]]
>>> selector = FastCan(
... n_features_to_select=2, verbose=0
... ).fit(X, y)
>>> selector.get_support()
array([ True, True, False])
>>> # Sorted indices
>>> selector.get_support(indices=True)
array([0, 1])
>>> # Indices in selection order
>>> selector.indices_
array([1, 0], dtype=int32)
>>> # Scores for selected features in selection order
>>> selector.scores_
array([0.91162413, 0.71089547])
>>> # Here Feature 2 must be included
>>> selector = FastCan(
... n_features_to_select=2, indices_include=[2], verbose=0
... ).fit(X, y)
>>> # The feature which is useful when working with Feature 2
>>> selector.indices_
array([2, 0], dtype=int32)
>>> selector.scores_
array([0.34617598, 0.95815008])
NARX Time Series Modelling#
fastcan can be used for system identification. In particular, we provide a submodule fastcan.narx to build Nonlinear AutoRegressive eXogenous (NARX) models. For more information, check this NARX model example.
Support WASM Wheels#
fastcan is compiled to WebAssembly (WASM) wheels using pyodide. You can try it in a REPL directly in a browser. The WASM wheels of fastcan can be installed by
>>> import micropip
>>> await micropip.install('fastcan')
📝 Note: The nightly wasm wheel of fastcan’s dependency (i.e. scikit-learn) can be found in Scientific Python Nightly Wheels.
Array API Support#
fastcan is actively adding support for array API compatible inputs. See our Array API support status.
Citation#
fastcan is a Python implementation of the following papers.
If you use the h-correlation method in your work please cite the following reference:
@article{ZHANG2022108419,
title = {Orthogonal least squares based fast feature selection for linear classification},
journal = {Pattern Recognition},
volume = {123},
pages = {108419},
year = {2022},
issn = {0031-3203},
doi = {https://doi.org/10.1016/j.patcog.2021.108419},
url = {https://www.sciencedirect.com/science/article/pii/S0031320321005951},
author = {Sikai Zhang and Zi-Qiang Lang},
keywords = {Feature selection, Orthogonal least squares, Canonical correlation analysis, Linear discriminant analysis, Multi-label, Multivariate time series, Feature interaction},
}
If you use the eta-cosine method in your work please cite the following reference:
@article{ZHANG2025111895,
title = {Canonical-correlation-based fast feature selection for structural health monitoring},
journal = {Mechanical Systems and Signal Processing},
volume = {223},
pages = {111895},
year = {2025},
issn = {0888-3270},
doi = {https://doi.org/10.1016/j.ymssp.2024.111895},
url = {https://www.sciencedirect.com/science/article/pii/S0888327024007933},
author = {Sikai Zhang and Tingna Wang and Keith Worden and Limin Sun and Elizabeth J. Cross},
keywords = {Multivariate feature selection, Filter method, Canonical correlation analysis, Feature interaction, Feature redundancy, Structural health monitoring},
}
If you just want to cite the fastcan software, please use the following reference:
@article{WANG2026102598,
title = {fastcan: A fast canonical-correlation-based searching algorithm},
journal = {SoftwareX},
volume = {34},
pages = {102598},
year = {2026},
issn = {2352-7110},
doi = {https://doi.org/10.1016/j.softx.2026.102598},
url = {https://www.sciencedirect.com/science/article/pii/S2352711026000919},
author = {Tingna Wang and Sikai Zhang and Lin Chen and Limin Sun},
keywords = {Machine learning, Scikit-learn, Feature selection, Data pruning, Time series, System identification, NARX},
}
Architecture Diagram#
API Reference#
Fast canonical correlation analysis based search algorithm. |
|
Nonlinear autoregressive exogenous (NARX) model for system identification. |
|
Utils functions. |
Useful Links#
API Compatibility#
The API of this library is align with scikit-learn.



