写在前面一、PCA主成分分析
1、主成分分析步骤2、主成分分析的主要作 二、Python使用PCA主成分分析
写在前面作为大数据开发人员,我们经常会收到一些数据分析工程师给我们的指标,我们基于这些指标进行数据提取。其中数据分析工程师最主要的一个特征提取方式就是PCA主成分分析,下面我将介绍Python的sklearn库中是如何实现PCA算法及其使用。
一、PCA主成分分析什么是PCA主成分分析。百度百科给出如下定义:
对于一个PCA主成分分析,一般分为以下几个步骤:
- 去除平均值计算协方差矩阵计算协方差矩阵的特征值和特征向量将特征值排序保留前N个最大的特征值对应的特征向量将原始特征转换到上面得到的N个特征向量构建的新空间中(最后两步,实现了特征压缩)
概括起来说,主成分分析主要有以下几个方面的作用。
- 主成分分析能降低所研究的数据空间的维数。即用研究m维的Y空间代替p维的X空间(m
二、Python使用PCA主成分分析
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
import numpy as np
X = np.array([[12, 350, 1.825, 0.102, 315, 0, 2, 4], [25, 300, 5.57, 0.45, 220, 25, 3, 2.5], [25, 300, 5.25, 1.1, 220, 20, 4, 3]])
Y = np.array([22, 300, 4.25, 1.86, 210, 18, 3, 2])
# n_components指定降维后的维数
pca = PCA(n_components=2)
print(pca)
# 应用于训练集数据进行PCA降维
pca.fit(X)
# 用X来训练PCA模型,同时返回降维后的数据
newX = pca.fit_transform(X)
print(newX)
# 将降维后的数据转换成原始数据,
pca_new = pca.transform(X)
print(pca_new.shape)
# 输出具有最大方差的成分
print(pca.components_)
# 输出所保留的n个成分各自的方差百分比
print(pca.explained_variance_ratio_)
# 输出所保留的n个成分各自的方差
print(pca.explained_variance_)
# 输出未处理的特征维数
print(pca.n_features_)
# 输出训练集的样本数量
print(pca.n_samples_)
# 输出协方差矩阵
print(pca.noise_variance_)
# 每个特征的奇异值
print(pca.ingular_values_)
# 用生成模型计算数据精度矩阵
print(pca.get_precision())
# 计算生成特征系数矩阵
covX = np.around(np.corrcoef(X.T), decimals=3)
# 输出特征系数矩阵
print(covX)
# 求解协方差矩阵的特征值和特征向量
featValue, featVec = np.linalg.eig(covX)
# 将特征进行降序排序
featValue = sorted(featValue)[::-1]
# 图像绘制
# 同样的数据绘制散点图和折线图
plt.scatter(range(1, X.shape[1] + 1), featValue)
plt.plot(range(1, X.shape[1] + 1), featValue)
# 显示图的标题
plt.title("Test Plot")
# xy轴的名字
plt.xlabel("Factors")
plt.ylabel("Eigenvalue")
# 显示网格
plt.grid()
# 显示图形
plt.show()



