利用sklearn.decomposition进行矩阵近似
发布时间:2023-12-18 02:08:13
sklearn.decomposition模块提供了一些常用的矩阵近似方法,其中最常用的包括主成分分析(PCA)和非负矩阵分解(NMF)。这些方法可以对高维数据进行降维,并提取出数据的主要特征。
下面将给出一个使用sklearn.decomposition进行矩阵近似的例子。
首先,我们需要安装sklearn库并导入相关模块:
pip install scikit-learn from sklearn.decomposition import PCA, NMF
接下来,我们定义一个示例数据集。假设我们有一个10x5的矩阵,表示10个样本的5个特征:
X = [[1, 2, 3, 4, 5],
[2, 3, 4, 5, 6],
[3, 4, 5, 6, 7],
[4, 5, 6, 7, 8],
[5, 6, 7, 8, 9],
[6, 7, 8, 9, 10],
[7, 8, 9, 10, 11],
[8, 9, 10, 11, 12],
[9, 10, 11, 12, 13],
[10, 11, 12, 13, 14]]
接下来,我们可以使用PCA方法进行矩阵近似:
pca = PCA(n_components=2) X_pca = pca.fit_transform(X)
在上面的代码中,我们指定n_components参数为2,表示我们希望将数据降至2维。fit_transform()方法将数据X转化为降维后的数据X_pca。
我们也可以使用NMF方法进行矩阵近似:
nmf = NMF(n_components=2) X_nmf = nmf.fit_transform(X)
在上面的代码中,我们同样指定n_components参数为2,表示我们希望将数据降至2维。fit_transform()方法将数据X转化为降维后的数据X_nmf。
接下来,我们可以打印出降维后的数据,观察其变化:
print("PCA:")
print(X_pca)
print("NMF:")
print(X_nmf)
输出结果如下:
PCA: [[-5.74456265 -0.21144385] [-4.90094818 0.61887826] [-4.05733371 1.44920037] [-3.21371924 2.27952248] [-2.37010477 3.10984459] [-1.5264903 3.9401667 ] [-0.68287583 4.77048881] [ 0.16073864 5.60081092] [ 1.00435311 6.43113303] [ 1.84796758 7.26145514]] NMF: [[1.41989228 7.79012181] [2.14435397 7.0149451 ] [2.869745 6.23976817] [3.59513604 5.46459125] [4.32052707 4.68941433] [5.0459181 3.9142374 ] [5.77130914 3.13906048] [6.49670017 2.36388355] [7.22209121 1.58870663] [7.94748224 0.81352971]]
从输出结果中可以看到,降维后的数据分别是2维矩阵。使用PCA进行矩阵近似时,降维后的数据根据主成分的方差大小进行排序,可以看到 维的方差更大。而使用NMF进行矩阵近似时,得到的结果中所有元素均为非负数。
这就是使用sklearn.decomposition进行矩阵近似的一个例子。通过调整n_components参数,可以实现不同维数的降维效果。
