Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
P

pyRiemann

> 编程语言
Open source

Machine learning for multivariate data through the Riemannian geometry of positive definite matrices in Python

773 stars0 likes1 views
WebsiteGitHub

About

Machine learning for multivariate data through the Riemannian geometry of positive definite matrices in Python

pyRiemann

pyRiemann is a Python machine learning package based on scikit-learn API. It provides a high-level interface for processing and classification of real (resp. complex)-valued multivariate data through the Riemannian geometry of symmetric (resp. Hermitian) positive definite (SPD) (resp. HPD) matrices.

The documentation is available on http://pyriemann.readthedocs.io/en/latest/

This code is BSD-licensed (3 clause).

Description

pyRiemann aims at being a generic package for multivariate data analysis but has been designed around biosignals (like EEG, MEG or EMG) manipulation applied to brain-computer interface (BCI), estimating covariance matrices from multichannel time series, and classifying them using the Riemannian geometry of SPD matrices [1].

For BCI applications, studied paradigms are motor imagery [2] [3], event-related potentials (ERP) [4] and steady-state visually evoked potentials (SSVEP) [5]. Using extended labels, API allows multisource transfer learning between sessions or subjects [6].

Another application is remote sensing, estimating covariance matrices over spatial coordinates of radar images using a sliding window, and processing them using the Riemannian geometry of SPD matrices for hyperspectral images, or HPD matrices for synthetic-aperture radar (SAR) images.

pyRiemann's core utility functions support both NumPy and PyTorch backends transparently through the Python Array API, enabling optional GPU acceleration and autograd when PyTorch tensors are passed in directly.

Installation

Using PyPI

bash
pip install pyriemann

or using pip+git for the latest version of the code:

bash
pip install git+https://github.com/pyRiemann/pyRiemann

Using conda

The package is distributed via conda-forge. You could install it in your working environment, with the following command:

bash
conda install -c conda-forge pyriemann

From sources

For the latest version, you can install the package from the sources using pip:

bash
pip install .

or in editable mode to be able to modify the sources:

bash
pip install -e .

How to use

Most of the functions mimic the scikit-learn API, and therefore can be directly used with sklearn. For example, for cross-validation classification of EEG signal using the MDM algorithm described in [2], it is easy as:

python
import pyriemann
from sklearn.model_selection import cross_val_score

# load your data
X = ... # EEG data, in format n_epochs x n_channels x n_times
y = ... # labels

# estimate covariance matrices
cov = pyriemann.estimation.Covariances().fit_transform(X)

# build your classifier
mdm = pyriemann.classification.MDM()

# cross validation
accuracy = cross_val_score(mdm, cov, y)

print(accuracy.mean())

You can also pipeline methods using sklearn pipeline framework. For example, to classify EEG signal using a SVM classifier in the tangent space, described in [3]:

python
from pyriemann.estimation import Covariances
from pyriemann.tangentspace import TangentSpace
from sklearn.pipeline import make_pipeline
from sklearn.model_selection import cross_val_score
from sklearn.svm import SVC

# load your data
X = ... # EEG data, in format n_epochs x n_channels x n_times
y = ... # labels

# build your pipeline
clf = make_pipeline(
    Covariances(),
    TangentSpace(),
    SVC(kernel="linear"),
)

# cross validation
accuracy = cross_val_score(clf, X, y)

print(accuracy.mean())

Check out the example folder for more examples.

Contribution Guidelines

The package aims at adopting the scikit-learn and MNE-Python conventions as much as possible. See their contribution guidelines before contributing to the repository.

Testing

If you make a modification, run the test suite before submitting a pull request

pytest

How to cite

…

References

[1] M. Congedo, A. Barachant and R. Bhatia, "Riemannian geometry for EEG-based brain-computer interfaces; a primer and a review". Brain-Computer Interfaces, 4.3, pp. 155-174, 2017. link

[2] A. Barachant, S. Bonnet, M. Congedo and C. Jutten, "Multiclass Brain-Computer Interface Classification by Riemannian Geometry". IEEE Transactions on Biomedical Engineering, vol. 59, no. 4, pp. 920-928, 2012. link

[3] A. Barachant, S. Bonnet, M. Congedo and C. Jutten, "Classification of covariance matrices using a Riemannian-based kernel for BCI applications". Neurocomputing, 112, pp. 172-178, 2013. link

[4] A. Barachant and M. Congedo, "A Plug&Play P300 BCI Using Information Geometry". Research report, 2014. link

[5] EK. Kalunga, S. Chevallier, Q. Barthélemy, K. Djouani, E. Monacelli and Y. Hamam, "Online SSVEP-based BCI using Riemannian geometry". Neurocomputing, 191, pp. 55-68, 2014. link

[6] PLC. Rodrigues, C. Jutten and M. Congedo, "Riemannian Procrustes analysis: transfer learning for brain-computer interfaces". IEEE Transactions on Biomedical Engineering, vol. 66, no. 8, pp. 2390-2401, 2018. link

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Pythonbrain-computer-interfacecovariance-estimationcovariance-matrixeeg

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言