View Source Scholar.CrossDecomposition.PLSSVD (Scholar v0.4.0)
Partial Least Square SVD.
This transformer simply performs a SVD on the cross-covariance matrix.
It is able to project both the training data x and the targets
y. The training data x is projected on the left singular vectors, while
the targets are projected on the right singular vectors.
Summary
Functions
Fit model to data. Takes as arguments:
Learn and apply the dimensionality reduction.
Apply the dimensionality reduction. Takes as arguments:
Functions
Fit model to data. Takes as arguments:
x- training samples,{num_samples, num_features}shaped tensory- targets,{num_samples, num_targets}shapedytensor
Options
:num_components(pos_integer/0) - The number of components to keep. Should be in[1, min(n_samples, n_features, n_targets)]. The default value is2.:scale(boolean/0) - Whether to scalexandy. The default value istrue.
Return Values
The function returns fitted estimator represented by struct with the following parameters:
:x_mean- tensor of shape{num_features}which representsxtensor mean values calculated along axis 0.:y_mean- tensor of shape{num_targets}which representsxtensor mean values calculated along axis 0.:x_std- tensor of shape{num_features}which representsxtensor standard deviation values calculated along axis 0.:y_std- tensor of shape{num_targets}which representsytensor standard deviation values calculated along axis 0.:x_weights- tensor of shape{num_features, num_components}the left singular vectors of the SVD of the cross-covariance matrix.:y_weights- tensor of shape{num_components, num_targets}the transposed right singular vectors of the SVD of the cross-covariance matrix.
Examples
iex> x = Nx.tensor([[0.0, 0.0, 1.0],
...> [1.0, 0.0, 0.0],
...> [2.0, 2.0, 2.0],
...> [2.0, 5.0, 4.0]])
iex> y = Nx.tensor([[0.1, -0.2],
...> [0.9, 1.1],
...> [6.2, 5.9],
...> [11.9, 12.3]])
iex> model = Scholar.CrossDecomposition.PLSSVD.fit(x, y)
iex> model.x_mean
#Nx.Tensor<
f32[3]
[1.25, 1.75, 1.75]
>
iex> model.y_std
#Nx.Tensor<
f32[2]
[5.467098712921143, 5.661198616027832]
>
iex> model.x_weights
#Nx.Tensor<
f32[3][2]
[
[0.521888256072998, -0.11256571859121323],
[0.6170258522033691, 0.7342619299888611],
[0.5889922380447388, -0.6694686412811279]
]
>
Learn and apply the dimensionality reduction.
The arguments are:
x- training samples,{num_samples, num_features}shaped tensory- targets,{num_samples, num_targets}shapedytensor
Options
:num_components(pos_integer/0) - The number of components to keep. Should be in[1, min(n_samples, n_features, n_targets)]. The default value is2.:scale(boolean/0) - Whether to scalexandy. The default value istrue.
Return Values
Returns tuple with transformed data {x_transformed, y_transformed} where:
x_transformedis{num_samples, num_features}shaped tensor.y_transformedis{num_samples, num_features}shaped tensor.
Examples
iex> x = Nx.tensor([[0.0, 0.0, 1.0],
...> [1.0, 0.0, 0.0],
...> [2.0, 2.0, 2.0],
...> [2.0, 5.0, 4.0]])
iex> y = Nx.tensor([[0.1, -0.2],
...> [0.9, 1.1],
...> [6.2, 5.9],
...> [11.9, 12.3]])
iex> {x, y} = Scholar.CrossDecomposition.PLSSVD.fit_transform(x, y)
iex> x
#Nx.Tensor<
f32[4][2]
[
[-1.397004246711731, -0.10283949971199036],
[-1.1967883110046387, 0.17159013450145721],
[0.5603229403495789, -0.10849219560623169],
[2.0334696769714355, 0.039741579443216324]
]
>
iex> y
#Nx.Tensor<
f32[4][2]
[
[-1.2260178327560425, -0.019306711852550507],
[-0.9602956175804138, 0.04015407711267471],
[0.3249155580997467, -0.04311027377843857],
[1.8613981008529663, 0.022262824699282646]
]
>
Apply the dimensionality reduction. Takes as arguments:
fitted estimator struct which is return value of
fit/3function from this modulex- training samples,{num_samples, num_features}shaped tensory- targets,{num_samples, num_targets}shapedytensor
Options
:num_components(pos_integer/0) - The number of components to keep. Should be in[1, min(n_samples, n_features, n_targets)]. The default value is2.:scale(boolean/0) - Whether to scalexandy. The default value istrue.
Return Values
Returns tuple with transformed data {x_transformed, y_transformed} where:
x_transformedis{num_samples, num_features}shaped tensor.y_transformedis{num_samples, num_features}shaped tensor.
Examples
iex> x = Nx.tensor([[0.0, 0.0, 1.0],
...> [1.0, 0.0, 0.0],
...> [2.0, 2.0, 2.0],
...> [2.0, 5.0, 4.0]])
iex> y = Nx.tensor([[0.1, -0.2],
...> [0.9, 1.1],
...> [6.2, 5.9],
...> [11.9, 12.3]])
iex> model = Scholar.CrossDecomposition.PLSSVD.fit(x, y)
iex> {x, y} = Scholar.CrossDecomposition.PLSSVD.transform(model, x, y)
iex> x
#Nx.Tensor<
f32[4][2]
[
[-1.397004246711731, -0.10283949971199036],
[-1.1967883110046387, 0.17159013450145721],
[0.5603229403495789, -0.10849219560623169],
[2.0334696769714355, 0.039741579443216324]
]
>
iex> y
#Nx.Tensor<
f32[4][2]
[
[-1.2260178327560425, -0.019306711852550507],
[-0.9602956175804138, 0.04015407711267471],
[0.3249155580997467, -0.04311027377843857],
[1.8613981008529663, 0.022262824699282646]
]
>