5分钟理解PCA主成分分析

知道IEEE这个国际学术机构和工业标准制定机构禁止部分国内985高校教授和受华为资助的教授和学生审稿和参与编辑后。除了愤怒还是愤怒,除了图强还是图强。说正事。 PCA用来可以降维。降低数据维度既可以减少计算量,也可以降低噪声。最后本文使用了Python对PCA进行实现。 初学者机器学习资料分享Q群(718566626)

1. 直观理解PCA主成分分析是什么?

2. 逐步理解PCA的执行过程

2.1 归一化(让椭圆圆心移动到原点)

2.2 计算协方差矩阵

2.3 计算协方差矩阵的特征值,将特征值从高到低排序,然后每个特征值对应一个特征向量。第k个特征向量与原先数据内积就是对应的第k个主成分

假如原数据一共有10维,如果我想降到4维。那么就取前4大的特征值对应的特征向量。这4个特征向量每个特征向量都是10维的。然后用这个4个特征向量与原先数据点内积,得到4个数。所有的原数据点都这样计算后就得到了第一第二第三第四主成分。这样就把10维降低到4维。(当然前面这个过程一般是用矩阵批量运算)

那么怎么计算我保留了多少信息,扔掉了多少信息?答:“计算保留的那4个特征值,占10个总特征值的比例即是保留了百分之几的信息”

你的赞是我分享的动力

3. Python编程实践,2维降到1维

学习算法建议最好不要逐行敲书上或者博客的代码,一定要自己把原理悟出来算法每一步做什么后按自己的思路去编程实现(这样学得最快)。

代码如下所示:

# -*- coding: utf-8 -*-
"""
@author: @Ai酱
"""
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,10,200) + np.random.rand(200)/5
y = 0.233 * x + np.random.rand(200)/3
# 归一化
x = (x - np.mean(x))/np.std(x)
y = (y - np.mean(y))/np.std(y)
#plt.scatter(x,y)
# 1. 计算协方差矩阵
cov_mat = np.cov(x,y)
# 2. 计算协方差矩阵的特征值
eigenvalues,eigenvectors = np.linalg.eig(cov_mat)
k = 1 # 降维后的目标维度
# 对特征值进行排序,取前k个
topk = np.argsort(eigenvalues)[0:k]
# 前k个最大的特征值对应的特征向量与原矩阵相乘
data = np.stack((x,y),axis=-1)
result = np.matmul(data,eigenvectors[topk].T)
plt.plot(result[:,0],result[:,0].shape[0]*[1],'.')#绘制一维图

相关文章

Ai酱:机器学习算法之k-means(k均值)Python代码实现

Ai酱:[易懂机器学习]KNN,k-Nearest Neighbor (k近邻算法)[分类算法]

Ai酱:[易懂]如何理解论文中的那些评估方法性能指标概念名词{召回率 ROC AUC 交叉验证}

Ai酱:{高中生能看懂的}再见香农,决策树的本质是什么,ID3决策树Python实实现逻辑异或功能

Ai酱:2个规则弄懂numpy的broadcast广播机制

本文首发于:挖掘商品关联性(2): FP-growth算法

Ai酱:挖掘商品关联性(2): FP-growth算法

参考文献:

[1] A step by step explanation of Principal Component Analysis

首发于CSDN :通俗解释如何理解主成分分析PCA,Python实现PCA主成分分析2维降到1维

Last updated