主成分分析(PCA)是一种旋转数据集的方法,旋转后的特征在统计上不相关。
用PCA做数据变换
首先,算法在原始数据点集中,找到方差最大的方向(包含最多信息),标记为‘成分1’。->找到与“成分1”正交(成直角)且包含最多信息的方向,标记为“成分2”。利用这一过程找到的方向被称为主成分(重建的最佳方向),一般主成分个数和原始特征数相同。
从数据中减去平均值,是的变换后的数据以0为中心->旋转数据:使第一主成分与x轴平行,第二主成分与y轴平行。两坐标轴是不相关的,除了对角线,相关矩阵全为0。
仅保留一部分主成分(第一主成分)进行PCA降维。二维数据集->一维数据集。(这个方向不是原始特征之一)
反向旋转并将平均值重新加到数据中。
这种变换可以用于去除数据中的噪声影响,或者将主成分中保留的那部分信息可视化。
将PCA应用于高维数据可视化(cancer数据集)
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_breast_cancer
import matplotlib.pyplot as plt
# 预处理:缩放数据是每个特征方差均为1
cancer = load_breast_cancer()
scaler = StandardScaler()
scaler.fit(cancer.data)
x_scaled = scaler.transform(cancer.data)
# 保留数据的前两个主成分,对数据集拟合PCA模型
pca = PCA(n_components=2) # 实例化对象并指定想要保留的主成分个数,默认情况下所有主成分都保留
pca.fit(x_scaled) # 找到主成分
# 变换数据集方向
x_pca = pca.transform(x_scaled) # 旋转并降维
print(x_scaled.shape) # 原始数据形状:(569, 30)
print(x_pca.shape)