欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【未完成】【机器学习】(十六)主成分分析PCA:高维数据可视化、特征提取

程序员文章站 2022-05-20 19:34:17
...

主成分分析(PCA)是一种旋转数据集的方法,旋转后的特征在统计上不相关。

用PCA做数据变换

  1. 首先,算法在原始数据点集中,找到方差最大的方向(包含最多信息),标记为‘成分1’。->找到与“成分1”正交(成直角)且包含最多信息的方向,标记为“成分2”。利用这一过程找到的方向被称为主成分,一般主成分个数和原始特征数相同。
  2. 从数据中减去平均值,是的变换后的数据以0为中心->旋转数据:使第一主成分与x轴平行,第二主成分与y轴平行。两坐标轴是不相关的,除了对角线,相关矩阵全为0。
  3. 仅保留一部分主成分(第一主成分)进行PCA降维。二维数据集->一维数据集。(这个方向不是原始特征之一)
  4. 反向旋转并将平均值重新加到数据中。

这种变换可以用于去除数据中的噪声影响,或者将主成分中保留的那部分信息可视化。
【未完成】【机器学习】(十六)主成分分析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) # 变换后的数据形状:(569, 2)

# 对第一主成分和第二主成分作图,按类别着色
plt.figure(figsize=(8, 8))
mglearn.discrete_scatter(x_pca[:, 0], x_pca[:, 1], cancer.target)
plt.legend(cancer.target_names, loc="best")
plt.gca().set_aspect("equal") # 获取当前子图,并设置x,y轴坐标刻度相等
plt.xlabel("First principal component")
plt.ylabel("Second principal component")

使用plt.gcf()和plt.gca()获得当前的图表和子图。
ax.set_aspect(“equal”)方法设定坐标轴间距、长度相等。

python matplotlib.pyplot画矩形图 以及plt.gca()
3.plt.gca().set_aspect(“equal”)

【未完成】【机器学习】(十六)主成分分析PCA:高维数据可视化、特征提取
PCA是一种无监督方法,缺点是,通常不容易对两个轴做出解释。主成分对应原始数据中的方向,所以它们是原始特征的组合。在拟合过程中,主成分被保存在PCA对象的components_属性中,每一行对应一个主成分,列对应PCA的原始属性。

PCA对象系数可视化(热图)

# cancer数据集有30个属性
print(pca.components_.shape)
print(pca.components_)

# 用热图将系数可视化
plt.matshow(pca.components_, cmap='viridis')
plt.yticks([0, 1], ['First component', 'Second component'])
plt.colorbar()
plt.xticks(range(len(cancer.feature_names)), cancer.feature_names, rotation=60, ha='left')
plt.xlabel("Feature")
plt.ylabel("Principal components")

【未完成】【机器学习】(十六)主成分分析PCA:高维数据可视化、特征提取

将PCA应用于特征提取(Wild数据集)