class_docstr: Channel selection based on a Riemannian geometry criterion.
  
  For each class, a centroid is estimated, and the channel selection is based
  on the maximization of the distance between centroids. This is done by a
  backward elimination where the electrode that carries the less distance is
  removed from the subset at each iteration.
  This algorithm is described in [1]_.
  
  Parameters
  ----------
  nelec : int, default=16
      The number of electrode to keep in the final subset.
  metric : string | dict, default='riemann'
      The type of metric used for centroid and distance estimation.
      see `mean_covariance` for the list of supported metric.
      the metric could be a dict with two keys, `mean` and `distance` in
      order to pass different metric for the centroid estimation and the
      distance estimation. Typical usecase is to pass 'logeuclid' metric for
      the mean in order to boost the computional speed and 'riemann' for the
      distance in order to keep the good sensitivity for the selection.
  n_jobs : int, default=1
      The number of jobs to use for the computation. This works by computing
      each of the class centroid in parallel.
      If -1 all CPUs are used. If 1 is given, no parallel computing code is
      used at all, which is useful for debugging. For n_jobs below -1,
      (n_cpus + 1 + n_jobs) are used. Thus for n_jobs = -2, all CPUs but one
      are used.
  
  Attributes
  ----------
  covmeans_ : list
      The class centroids.
  dist_ : list
      List of distance at each interation.
  
  See Also
  --------
  Kmeans
  FgMDM
  
  References
  ----------
  .. [1] `Channel selection procedure using riemannian distance for BCI
      applications
      <https://hal.archives-ouvertes.fr/hal-00602707>`_
      A. Barachant and S. Bonnet. The 5th International IEEE EMBS Conference
      on Neural Engineering, Apr 2011, Cancun, Mexico.
class_docstr_tok: ["Channel","selection","based","on","a","Riemannian","geometry","criterion",".","For","each","class",",","a","centroid","is","estimated",",","and","the","channel","selection","is","based","on","the","maximization","of","the","distance","between","centroids",".","This","is","done","by","a","backward","elimination","where","the","electrode","that","carries","the","less","distance","is","removed","from","the","subset","at","each","iteration",".","This","algorithm","is","described","in","[","1","]","_.","Parameters","--","--","--","--","--","nelec",":","int",",","default=16","The","number","of","electrode","to","keep","in","the","final","subset",".","metric",":","string","|","dict",",","default='riemann'","The","type","of","metric","used","for","centroid","and","distance","estimation",".","see","`","mean_covariance","`","for","the","list","of","supported","metric",".","the","metric","could","be","a","dict","with","two","keys",",","`","mean","`","and","`","distance","`","in","order","to","pass","different","metric","for","the","centroid","estimation","and","the","distance","estimation",".","Typical","usecase","is","to","pass","'logeuclid","'","metric","for","the","mean","in","order","to","boost","the","computional","speed","and","'riemann","'","for","the","distance","in","order","to","keep","the","good","sensitivity","for","the","selection",".","n_jobs",":","int",",","default=1","The","number","of","jobs","to","use","for","the","computation",".","This","works","by","computing","each","of","the","class","centroid","in","parallel",".","If","-1","all","CPUs","are","used",".","If","1","is","given",",","no","parallel","computing","code","is","used","at","all",",","which","is","useful","for","debugging",".","For","n_jobs","below","-1",",","(","n_cpus","+","1","+","n_jobs",")","are","used",".","Thus","for","n_jobs","=","-2",",","all","CPUs","but","one","are","used",".","Attributes","--","--","--","--","--","covmeans_",":","list","The","class","centroids",".","dist_",":","list","List","of","distance","at","each","interation",".","See","Also","--","--","--","--","Kmeans","FgMDM","References","--","--","--","--","--","..","[","1","]","`","Channel","selection","procedure","using","riemannian","distance","for","BCI","applications","<","https",":","\/\/hal.archives-ouvertes.fr\/hal-00602707",">","`","_","A.","Barachant","and","S.","Bonnet",".","The","5th","International","IEEE","EMBS","Conference","on","Neural","Engineering",",","Apr","2011",",","Cancun",",","Mexico","."]
docstr: Return reduced matrices.
  
  Parameters
  ----------
  X : ndarray, shape (n_matrices, n_channels, n_channels)
      Set of SPD matrices.
  
  Returns
  -------
  covs : ndarray, shape (n_matrices, n_elec, n_elec)
      Set of SPD matrices after reduction of the number of channels.
docstr_tok: ["Return","reduced","matrices",".","Parameters","--","--","--","--","--","X",":","ndarray",",","shape","(","n_matrices",",","n_channels",",","n_channels",")","Set","of","SPD","matrices",".","Returns","--","--","--","-","covs",":","ndarray",",","shape","(","n_matrices",",","n_elec",",","n_elec",")","Set","of","SPD","matrices","after","reduction","of","the","number","of","channels","."]
code: def transform(self, X):
      """Return reduced matrices.
  
      Parameters
      ----------
      X : ndarray, shape (n_matrices, n_channels, n_channels)
          Set of SPD matrices.
  
      Returns
      -------
      covs : ndarray, shape (n_matrices, n_elec, n_elec)
          Set of SPD matrices after reduction of the number of channels.
      """
      return X[:, self.subelec_, :][:, :, self.subelec_]
  
file_path: pyRiemann/pyriemann/channelselection.py
imports: import numpy
  from sklearn.base import BaseEstimator, TransformerMixin
  from .utils.distance import distance
  from .classification import MDM
label_desc: Use image node_id 3 for calling the ElectrodeSelection obj's underlying member method code with example usage: obj.transform(X) and returns: X