10、主成分分析PCA(Principal Component Analysis)

基于特征值分解协方差矩阵实现PCA算法

1、主成分分析:

1、用途:降维(提取最有价值的信息)
2、目标:无监督,分类问题

2、基础知识:

1、内积:

A=(a1,a2,a3…,an)
B=(b1,b2,b2,…,bn)
A·B=a1b1+a2b2+a3b3+…+anbn
=|A||B| cos(α)
设向量B的模为1,则AB内积===A向B所在的直线投影的矢量长度

2、基:

条件:
1、单位为1
2、内积为0=正交=垂直==A,B线性无关

3、基变换(重点):

数据与第一个基做内积运算,结果作为第一个新的坐标分量
与第二个基做运算,结果作为第二个新坐标的分类
实例:
(3,2)=3*(1,0)+2*(0,1)
在这里插入图片描述
新向量基,,,,原坐标,新坐标
意义:
内积将原坐标的变换到新坐标基中,得到新坐标

4、方差:

各个样本数据和平均数之差的 平方和 的平均数
在这里插入图片描述

5、协方差:

各个样本数据和平均数之差的 平方和 的平均数
有方向:正值:A和B变化趋势相同,反之
在这里插入图片描述

3、原理:

1、条件:
条件1:这是一个分类问题==>将数据分割开==>投影值要尽可能分散==>方差要大
条件2:选取了方差大的一维,第二维的选择会在第一维选择附近(只有这个方向,方差最大==>坐标应是线性无关(正交的)==>协方差=0
2、计算:
将一组N维向量降维到K维(N>K>0),目标选择K个单位正交基,是的将原始数据通过内积转换到这组正交基上,条件2个
协方差矩阵:
在这里插入图片描述
内积:
在这里插入图片描述
对角线是方差,越大越好
其他是协方差,==0
==>标准的就是对角矩阵
(实对称矩阵n*n一定能找到n个单位正交特征向量)
3、排序:
特征值:各个方向的重要程度
特征向量:各个方向
==>根据特征值的从大到小,将特征向量从上到下排列,则用前K行组成的矩阵乘以原始数据矩阵X,就得到了我们需要的降维后的数据矩阵Y
==>实现了降维

##dao
在这里插入图片描述
因为λ1=2>>λ2,所有选择特征向量1,实现了二维降到一维

5、代码分析:

运用鸢尾花数据进行,
150条总数据,每种50条
3个特征值:‘Iris-Setosa’,‘Iris-Versicolor’,’Iris-Virgnica’
4个特征向量:‘sepal_len’, ‘sepal_wid’, ‘petal_len’, ‘petal_wid’

1、读取数据,进行处理

1、导入数据

import numpy as np
import pandas as pd
df = pd.read_csv('iris.data')
df.columns=['sepal_len', 'sepal_wid', 'petal_len', 'petal_wid', 'class']#加入列名
df.head()

2、数据赋值

X = df.iloc[:,0:4].values#四列特征值
y = df.iloc[:,4].values#最后的分类

3、数据标准化

from sklearn.preprocessing import StandardScaler
X_std = StandardScaler().fit_transform(X)#标准化

2、计算

cov_mat = np.cov(X_std.T)#计算协方差
eig_vals, eig_vecs = np.linalg.eig(cov_mat)#特征值,特征向量
#将特征值和特征向量一一组合在一起
eig_pairs = [(np.abs(eig_vals[i]), eig_vecs[:,i]) for i in range(len(eig_vals))]
#按照特征值进行排序,得到方差大的方向
eig_pairs.sort(key=lambda x: x[0], reverse=True)

可以进行处理,直观的看到对方向影响的大小

tot = sum(eig_vals)#特征值的总和
#映射称为了百分数形式,便于观察他们的重要程度
var_exp = [(i / tot)*100 for i in sorted(eig_vals, reverse=True)]

#累加起来,观察
cum_var_exp = np.cumsum(var_exp)

通过数据,可以看出对方向的影响几乎可以达到100==>只选择前两个特征向量组成新的基向量

matrix_w = np.hstack((eig_pairs[0][1].reshape(4,1),eig_pairs[1][1].reshape(4,1)))
Y = X_std.dot(matrix_w)

3、数据处理与展示

对比观察:
同样是两维对三组特征值分类:
在这里插入图片描述
主要是用于降维,分类看不出什么呀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值