如何使用Python Scikit-learn实现随机投影?
随机投影是一种降维和数据可视化方法,可以简化高维数据的复杂性。它通常被应用于其他降维技术例如 主成分分析(PCA) 做不到的数据上。
Python Scikit-learn提供了一个名为 _sklearn.randomprojection 的模块,实现了一种计算效率高的降维方法。它实现了以下两种类型的无结构随机矩阵:
- 高斯随机矩阵
- 稀疏随机矩阵
实现高斯随机投影
要实现高斯随机矩阵, _randomprojection 模块使用 GaussianRandomProjection() 函数,通过将原始空间投影到随机生成的矩阵上来降低维度。
示例
我们看一个实例,使用高斯随机投影变换器,并将投影矩阵的值可视化为直方图:
# 导入所需包
import sklearn
from sklearn.random_projection import GaussianRandomProjection
import numpy as np
from matplotlib import pyplot as plt
# 随机数据及其变换
X_random = np.random.RandomState(0).rand(100, 10000)
gauss_data = GaussianRandomProjection(random_state=0)
X_transformed = gauss_data.fit_transform(X_random)
# 获取转换后数据的大小
print('Shape of transformed data is: ' + str(X_transformed.shape))
# 设置图形大小
plt.figure(figsize=(7.50, 3.50))
plt.subplots_adjust(bottom=0.05, top=0.9, left=0.05, right=0.95)
# 用直方图可视化变换矩阵的元素
plt.hist(gauss_data.components_.flatten())
plt.title('Histogram of the flattened transformation matrix', size ='18')
plt.show()
输出结果
它将生成以下输出结果
Shape of transformed data is: (100, 3947)