fbpca 是Facebook 公司开源的 Fast Randomized PCA/SVD 工具(快速随机 PCA/SVD 算法分析)。fbpca由python语言编写,可以方便的用于深度学习的一些工程或者不方便使用MATLAB的工程中。本文主要介绍如何使用该工具分析数据的主成分,而不过多介绍PCA的原理。
fbpca在GitHub上的项目地址:https://github.com/facebookarchive/fbpca?
安装fbpca:?
pip install fbpca
?安装依赖
numpy>=1.9
scipy>=0.14
以下为一段示例代码,程序首先生成了一组二维数据,然后调用fbpca中的pca函数,计算出这组数据使用PCA降维后的结果,特征值与特征向量(新的基)
?
import numpy as np
import matplotlib.pyplot as plt
from fbpca import pca
# 生成仿真数据
noise = np.random.randn(20) / 5
xaxis = (np.random.rand(20) - 0.5) * 10
yaxis = -1.5*xaxis + noise
data = np.stack([xaxis, yaxis]).T
# 进行PCA降维分别输出:降维结果、特征值、特征向量
U, s, Va = pca(data, 2)
# 使用特征向量计算投影平面
t = np.linspace(-10,10,1000)
x = Va[0,0] * t
y = Va[0,1] * t
x0 = Va[1,1] * t
y0 = Va[1,0] * t
# 结果可视化
plt.figure()
plt.xlim(-5, 5)
plt.ylim(-5, 5)
plt.plot(x,y,color='r')
plt.plot(x0,y0,color='g')
plt.scatter(xaxis, yaxis)
plt.show()
?
?
修改函数pca中的第二个参数可以改变使用PCA降维后特征的维数,该参数必须小于数据的维数。
fbpca原文使用手册(包含奇异值分解等其他函数):https://fbpca.readthedocs.io/en/latest/
|