(手写)PCA原理及其Python实现图文详解

2022-04-20 0 118

1、背景

为什么需要降维呢?

因为数据个数 N 和每个数据的维度 p 不满足 N >> p,造成了模型结果的“过拟合”。有两种方法解决上述问题:

增加N;减小p。

这里我们讲解的 PCA 属于方法2。

2、样本均值和样本方差矩阵

(手写)PCA原理及其Python实现图文详解

(手写)PCA原理及其Python实现图文详解

3、PCA

(手写)PCA原理及其Python实现图文详解
(手写)PCA原理及其Python实现图文详解

3.1 最大投影方差

(手写)PCA原理及其Python实现图文详解

3.2 最小重构距离

(手写)PCA原理及其Python实现图文详解

4、Python实现

\"\"\"
    -*- coding: utf-8 -*-
    @ Time     : 2021/8/15  22:19
    @ Author   : Raymond
    @ Email    : wanght2316@163.com
    @ Editor   : Pycharm
\"\"\"
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
import pandas as pd
import matplotlib.pyplot as plt

digits = load_digits()
print(digits.keys())
print(\"数据的形状为: {}\".format(digits[\'data\'].shape))
# 构建模型 - 降到10 d
pca = PCA(n_components=10)
pca.fit(digits.data)
projected=pca.fit_transform(digits.data)
print(\'降维后主成分的方差值为:\',pca.explained_variance_)
print(\'降维后主成分的方差值占总方差的比例为:\',pca.explained_variance_ratio_)
print(\'降维后最大方差的成分为:\',pca.components_)
print(\'降维后主成分的个数为:\',pca.n_components_)
print(\'original shape:\',digits.data.shape)
print(\'transformed shape:\',projected.shape)
s = pca.explained_variance_
c_s = pd.DataFrame({\'b\': s,\'b_sum\': s.cumsum() / s.sum()})
c_s[\'b_sum\'].plot(style= \'--ko\',figsize= (10, 4))
plt.rcParams[\'font.sans-serif\'] = [\'SimHei\']  # 指定默认字体
plt.rcParams[\'axes.unicode_minus\'] = False  # 解决保存图像是负号\'-\'显示为方块的问题
plt.axhline(0.85,  color= \'r\',linestyle= \'--\')
plt.text(6, c_s[\'b_sum\'].iloc[6]-0.08, \'第7个成分累计贡献率超过85%\', color=\'b\')
plt.title(\'PCA 各成分累计占比\')
plt.grid()
plt.savefig(\'./PCA.jpg\')
plt.show()

结果展示:

(手写)PCA原理及其Python实现图文详解

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注自学编程网的更多内容!

遇见资源网 Python (手写)PCA原理及其Python实现图文详解 http://www.ox520.com/29377.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务