【PCA学习笔记】

算法描述

1.算法过程:
①中心化(减去均值)
②计算协方差矩阵
③计算特征值及特征向量
④降维转换(原数据点乘特征向量)

知识储备

1.数据降维必要性看维度灾难。[4]
2.协方差矩阵。[2]
3.特征值/向量。[3]

举个栗子

1.[6]有详尽的例子。
2.样本中心化到协方差矩阵过程:设中心化后并转置的样本为,共10个样本数据,每个数据有3个维度。
在这里插入图片描述

实现代码

1.三维数据降到二维可视化,颜色对应,数据分布大致一致。
在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.decomposition import PCA
import matplotlib.cm as cm

# '10样本3特征的样本集'
X = np.array([[10, 15, 29],
              [15, 46, 13],
              [23, 21, 30],
              [11, 9, 35],
              [42, 45, 11],
              [9, 48, 5],
              [11, 21, 14],
              [8, 5, 15],
              [11, 12, 21],
              [21, 20, 25]])

# color
x = np.arange(10)
ys = [i+x+(i*x)**2 for i in range(10)]
colors = cm.rainbow(np.linspace(0, 1, len(ys)))

# 三维显示
fig = plt.figure()
ax = Axes3D(fig, rect=[0, 0, 1, 1], elev=30, azim=20)
for index, c in zip(range(10), colors):
    plt.scatter(X[index, 0], X[index, 1], s=100, marker='o', color=c)
plt.show()

# PCA降维
pca = PCA(n_components=2)
pca.fit(X)
X_new = pca.transform(X)

# 降维后显示
for index, c in zip(range(10), colors):
    plt.scatter(X_new[index, 0], X_new[index, 1],marker='o', color=c)
plt.show()

2.sklearn实现版本。[1]

算法分析

1.无监督学习,简单实现数据降维。
2.特征值小的主成分可能包含差异化的信息。

资料引用

[1]GitHub:https://github.com/ljpzzz/machinelearning/blob/master/classic-machine-learning/pca.ipynb
[2]CSDN:https://blog.csdn.net/blackyuanc/article/details/100703888
[3]CSDN:https://blog.csdn.net/z735640642/article/details/86166577
[5]Bilibili:https://www.bilibili.com/video/BV1aE411o7qd?p=22
[6]CSDN:https://blog.csdn.net/u012421852/article/details/80458340
此算法笔记会在CSDN、知乎、b站及公众号同步更新,账号名为一枚嘉应子。转载注明出处,侵权必究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值