pca

package
v2.0.0-dev0.0.19 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 15, 2024 License: BSD-3-Clause Imports: 5 Imported by: 1

README

pca

Docs: GoDoc

This performs principal component's analysis and associated covariance matrix computations, operating on etable.Table or etensor.Tensor data, using the gonum matrix interface.

There is support for the SVD version, which is much faster and produces the same results, with options for how much information to compute trading off with compute time.

Documentation

Overview

Package pca performs principal component's analysis and associated covariance matrix computations, operating on etable.Table or etensor.Tensor data.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CovarTableCol

func CovarTableCol(cmat etensor.Tensor, ix *etable.IndexView, colNm string, mfun metric.Func64) error

CovarTableCol generates a covariance matrix from given column name in given IndexView of an etable.Table, and given metric function (typically Covariance or Correlation -- use Covar if vars have similar overall scaling, which is typical in neural network models, and use Correl if they are on very different scales -- Correl effectively rescales). A Covariance matrix computes the *row-wise* vector similarities for each pairwise combination of column cells -- i.e., the extent to which each cell co-varies in its value with each other cell across the rows of the table. This is the input to the PCA eigenvalue decomposition of the resulting covariance matrix.

func CovarTableColStd

func CovarTableColStd(cmat etensor.Tensor, ix *etable.IndexView, colNm string, met metric.StdMetrics) error

CovarTableColStd generates a covariance matrix from given column name in given IndexView of an etable.Table, and given metric function (typically Covariance or Correlation -- use Covar if vars have similar overall scaling, which is typical in neural network models, and use Correl if they are on very different scales -- Correl effectively rescales). A Covariance matrix computes the *row-wise* vector similarities for each pairwise combination of column cells -- i.e., the extent to which each cell co-varies in its value with each other cell across the rows of the table. This is the input to the PCA eigenvalue decomposition of the resulting covariance matrix. This Std version is usable e.g., in Python where the func cannot be passed.

func CovarTensor

func CovarTensor(cmat etensor.Tensor, tsr etensor.Tensor, mfun metric.Func64) error

CovarTensor generates a covariance matrix from given etensor.Tensor, where the outer-most dimension is rows, and all other dimensions within that are covaried against each other, using given metric function (typically Covariance or Correlation -- use Covar if vars have similar overall scaling, which is typical in neural network models, and use Correl if they are on very different scales -- Correl effectively rescales). A Covariance matrix computes the *row-wise* vector similarities for each pairwise combination of column cells -- i.e., the extent to which each cell co-varies in its value with each other cell across the rows of the table. This is the input to the PCA eigenvalue decomposition of the resulting covariance matrix.

func CovarTensorStd

func CovarTensorStd(cmat etensor.Tensor, tsr etensor.Tensor, met metric.StdMetrics) error

CovarTensorStd generates a covariance matrix from given etensor.Tensor, where the outer-most dimension is rows, and all other dimensions within that are covaried against each other, using given metric function (typically Covariance or Correlation -- use Covar if vars have similar overall scaling, which is typical in neural network models, and use Correl if they are on very different scales -- Correl effectively rescales). A Covariance matrix computes the *row-wise* vector similarities for each pairwise combination of column cells -- i.e., the extent to which each cell co-varies in its value with each other cell across the rows of the table. This is the input to the PCA eigenvalue decomposition of the resulting covariance matrix. This Std version is usable e.g., in Python where the func cannot be passed.

func TableColRowsVec

func TableColRowsVec(vec []float64, ix *etable.IndexView, col etensor.Tensor, cidx int)

TableColRowsVec extracts row-wise vector from given cell index into vec. vec must be of size ix.Len() -- number of rows

func TensorRowsVec

func TensorRowsVec(vec []float64, tsr etensor.Tensor, cidx int)

TensorRowsVec extracts row-wise vector from given cell index into vec. vec must be of size tsr.Dim(0) -- number of rows

Types

type PCA

type PCA struct {

	// the covariance matrix computed on original data, which is then eigen-factored
	Covar *etensor.Float64 `view:"no-inline"`

	// the eigenvectors, in same size as Covar - each eigenvector is a column in this 2D square matrix, ordered *lowest* to *highest* across the columns -- i.e., maximum eigenvector is the last column
	Vectors *etensor.Float64 `view:"no-inline"`

	// the eigenvalues, ordered *lowest* to *highest*
	Values []float64 `view:"no-inline"`
}

PCA computes the eigenvalue decomposition of a square similarity matrix, typically generated using the correlation metric.

func (*PCA) Init

func (pca *PCA) Init()

func (*PCA) PCA

func (pca *PCA) PCA() error

PCA performs the eigen decomposition of the existing Covar matrix. Vectors and Values fields contain the results.

func (*PCA) ProjectCol

func (pca *PCA) ProjectCol(vals *[]float64, ix *etable.IndexView, colNm string, idx int) error

ProjectCol projects values from the given colNm of given table (via IndexView) onto the idx'th eigenvector (0 = largest eigenvalue, 1 = next, etc). Must have already called PCA() method.

func (*PCA) ProjectColToTable

func (pca *PCA) ProjectColToTable(prjns *etable.Table, ix *etable.IndexView, colNm, labNm string, idxs []int) error

ProjectColToTable projects values from the given colNm of given table (via IndexView) onto the given set of eigenvectors (idxs, 0 = largest eigenvalue, 1 = next, etc), and stores results along with labels from column labNm into results table. Must have already called PCA() method.

func (*PCA) TableCol

func (pca *PCA) TableCol(ix *etable.IndexView, colNm string, mfun metric.Func64) error

TableCol is a convenience method that computes a covariance matrix on given column of table and then performs the PCA on the resulting matrix. If no error occurs, the results can be read out from Vectors and Values or used in Projection methods. mfun is metric function, typically Covariance or Correlation -- use Covar if vars have similar overall scaling, which is typical in neural network models, and use Correl if they are on very different scales -- Correl effectively rescales). A Covariance matrix computes the *row-wise* vector similarities for each pairwise combination of column cells -- i.e., the extent to which each cell co-varies in its value with each other cell across the rows of the table. This is the input to the PCA eigenvalue decomposition of the resulting covariance matrix, which extracts the eigenvectors as directions with maximal variance in this matrix.

func (*PCA) TableColStd

func (pca *PCA) TableColStd(ix *etable.IndexView, colNm string, met metric.StdMetrics) error

TableColStd is a convenience method that computes a covariance matrix on given column of table and then performs the PCA on the resulting matrix. If no error occurs, the results can be read out from Vectors and Values or used in Projection methods. mfun is a Std metric function, typically Covariance or Correlation -- use Covar if vars have similar overall scaling, which is typical in neural network models, and use Correl if they are on very different scales -- Correl effectively rescales). A Covariance matrix computes the *row-wise* vector similarities for each pairwise combination of column cells -- i.e., the extent to which each cell co-varies in its value with each other cell across the rows of the table. This is the input to the PCA eigenvalue decomposition of the resulting covariance matrix, which extracts the eigenvectors as directions with maximal variance in this matrix. This Std version is usable e.g., in Python where the func cannot be passed.

func (*PCA) Tensor

func (pca *PCA) Tensor(tsr etensor.Tensor, mfun metric.Func64) error

Tensor is a convenience method that computes a covariance matrix on given tensor and then performs the PCA on the resulting matrix. If no error occurs, the results can be read out from Vectors and Values or used in Projection methods. mfun is metric function, typically Covariance or Correlation -- use Covar if vars have similar overall scaling, which is typical in neural network models, and use Correl if they are on very different scales -- Correl effectively rescales). A Covariance matrix computes the *row-wise* vector similarities for each pairwise combination of column cells -- i.e., the extent to which each cell co-varies in its value with each other cell across the rows of the table. This is the input to the PCA eigenvalue decomposition of the resulting covariance matrix, which extracts the eigenvectors as directions with maximal variance in this matrix.

func (*PCA) TensorStd

func (pca *PCA) TensorStd(tsr etensor.Tensor, met metric.StdMetrics) error

TensorStd is a convenience method that computes a covariance matrix on given tensor and then performs the PCA on the resulting matrix. If no error occurs, the results can be read out from Vectors and Values or used in Projection methods. mfun is Std metric function, typically Covariance or Correlation -- use Covar if vars have similar overall scaling, which is typical in neural network models, and use Correl if they are on very different scales -- Correl effectively rescales). A Covariance matrix computes the *row-wise* vector similarities for each pairwise combination of column cells -- i.e., the extent to which each cell co-varies in its value with each other cell across the rows of the table. This is the input to the PCA eigenvalue decomposition of the resulting covariance matrix, which extracts the eigenvectors as directions with maximal variance in this matrix. This Std version is usable e.g., in Python where the func cannot be passed.

type SVD

type SVD struct {

	// type of SVD to run: SVDNone is the most efficient if you only need the values which are always computed.  Otherwise, SVDThin is the next most efficient for getting approximate vectors
	Kind mat.SVDKind

	// condition value -- minimum normalized eigenvalue to return in values
	Cond float64 `default:"0.01"`

	// the rank (count) of singular values greater than Cond
	Rank int

	// the covariance matrix computed on original data, which is then eigen-factored
	Covar *etensor.Float64 `view:"no-inline"`

	// the eigenvectors, in same size as Covar - each eigenvector is a column in this 2D square matrix, ordered *lowest* to *highest* across the columns -- i.e., maximum eigenvector is the last column
	Vectors *etensor.Float64 `view:"no-inline"`

	// the eigenvalues, ordered *lowest* to *highest*
	Values []float64 `view:"no-inline"`
}

SVD computes the eigenvalue decomposition of a square similarity matrix, typically generated using the correlation metric.

func (*SVD) Init

func (svd *SVD) Init()

func (*SVD) ProjectCol

func (svd *SVD) ProjectCol(vals *[]float64, ix *etable.IndexView, colNm string, idx int) error

ProjectCol projects values from the given colNm of given table (via IndexView) onto the idx'th eigenvector (0 = largest eigenvalue, 1 = next, etc). Must have already called SVD() method.

func (*SVD) ProjectColToTable

func (svd *SVD) ProjectColToTable(prjns *etable.Table, ix *etable.IndexView, colNm, labNm string, idxs []int) error

ProjectColToTable projects values from the given colNm of given table (via IndexView) onto the given set of eigenvectors (idxs, 0 = largest eigenvalue, 1 = next, etc), and stores results along with labels from column labNm into results table. Must have already called SVD() method.

func (*SVD) SVD

func (svd *SVD) SVD() error

SVD performs the eigen decomposition of the existing Covar matrix. Vectors and Values fields contain the results.

func (*SVD) TableCol

func (svd *SVD) TableCol(ix *etable.IndexView, colNm string, mfun metric.Func64) error

TableCol is a convenience method that computes a covariance matrix on given column of table and then performs the SVD on the resulting matrix. If no error occurs, the results can be read out from Vectors and Values or used in Projection methods. mfun is metric function, typically Covariance or Correlation -- use Covar if vars have similar overall scaling, which is typical in neural network models, and use Correl if they are on very different scales -- Correl effectively rescales). A Covariance matrix computes the *row-wise* vector similarities for each pairwise combination of column cells -- i.e., the extent to which each cell co-varies in its value with each other cell across the rows of the table. This is the input to the SVD eigenvalue decomposition of the resulting covariance matrix, which extracts the eigenvectors as directions with maximal variance in this matrix.

func (*SVD) TableColStd

func (svd *SVD) TableColStd(ix *etable.IndexView, colNm string, met metric.StdMetrics) error

TableColStd is a convenience method that computes a covariance matrix on given column of table and then performs the SVD on the resulting matrix. If no error occurs, the results can be read out from Vectors and Values or used in Projection methods. mfun is a Std metric function, typically Covariance or Correlation -- use Covar if vars have similar overall scaling, which is typical in neural network models, and use Correl if they are on very different scales -- Correl effectively rescales). A Covariance matrix computes the *row-wise* vector similarities for each pairwise combination of column cells -- i.e., the extent to which each cell co-varies in its value with each other cell across the rows of the table. This is the input to the SVD eigenvalue decomposition of the resulting covariance matrix, which extracts the eigenvectors as directions with maximal variance in this matrix. This Std version is usable e.g., in Python where the func cannot be passed.

func (*SVD) Tensor

func (svd *SVD) Tensor(tsr etensor.Tensor, mfun metric.Func64) error

Tensor is a convenience method that computes a covariance matrix on given tensor and then performs the SVD on the resulting matrix. If no error occurs, the results can be read out from Vectors and Values or used in Projection methods. mfun is metric function, typically Covariance or Correlation -- use Covar if vars have similar overall scaling, which is typical in neural network models, and use Correl if they are on very different scales -- Correl effectively rescales). A Covariance matrix computes the *row-wise* vector similarities for each pairwise combination of column cells -- i.e., the extent to which each cell co-varies in its value with each other cell across the rows of the table. This is the input to the SVD eigenvalue decomposition of the resulting covariance matrix, which extracts the eigenvectors as directions with maximal variance in this matrix.

func (*SVD) TensorStd

func (svd *SVD) TensorStd(tsr etensor.Tensor, met metric.StdMetrics) error

TensorStd is a convenience method that computes a covariance matrix on given tensor and then performs the SVD on the resulting matrix. If no error occurs, the results can be read out from Vectors and Values or used in Projection methods. mfun is Std metric function, typically Covariance or Correlation -- use Covar if vars have similar overall scaling, which is typical in neural network models, and use Correl if they are on very different scales -- Correl effectively rescales). A Covariance matrix computes the *row-wise* vector similarities for each pairwise combination of column cells -- i.e., the extent to which each cell co-varies in its value with each other cell across the rows of the table. This is the input to the SVD eigenvalue decomposition of the resulting covariance matrix, which extracts the eigenvectors as directions with maximal variance in this matrix. This Std version is usable e.g., in Python where the func cannot be passed.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL