主成分分析(PCA)是最常见的降维算法。
在 PCA 中,我们要做的是找到一个方向向量(Vector direction),当我们把所有的数据都投射到该向量上时,我们希望投射平均均方误差能尽可能地小。方向向量是一个经过原点的向量,而投射误差是从特征向量向该方向向量作垂线的长度。
数据在降维处理过程中是无序的,主要用于无监督学习(不带标价签的数据)。
import numpy as np
from sklearn.decomposition import PCA
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
# pca = PCA(n_components=1)
# print(pca.explained_variance_ratio_) # 每个维度值差异百分比
# print(pca.singular_values_) # 每个维度的奇异值
pca = PCA(n_components=1).fit_transform(X) # 降到一维
print(pca) #[[ 1.38340578][ 2.22189802][ 3.6053038 ][-1.38340578][-2.22189802][-3.6053038 ]]