凌云时刻 · 技术
导读:这篇笔记将继续讲解机器学习中经常用到的降维算法PCA及PCA降噪的作用。
作者 | 计缘
来源 | 凌云时刻(微信号:linuxpk)
高维数据向低维数据映射
我们再来回顾一下PCA降维的基本原理,首先要做的事情就是对样本数据寻找另外一个坐标系,这个坐标系中的每一个轴依次可以表达样本数据的重要程度,既主成分。我们取出前k个主成分,然后就可以将所有的样本数据映射到这k个轴上,既获得了一个低维的数据信息。
上面的 是样本数据,该样本数据有m行,n个特征,既是一个n维的样本数据。
假设上面的 是样本数据 的主成分向量矩阵,每一行代表一个主成分向量,一共有k个主成分向量,每个主成分向量上有n个值。
我们已经推导出了求映射后的向量的大小,也就是每一行样本数据映射到该主成分上的大小为:
那如果将一行有n个特征的样本数据分别映射到k个主成分上,既得到有k个值的新向量,既降维后的,有k个特征的新样本数据。所以我们需要的就是 矩阵的第一行和 矩阵的每一行对应元素相乘然后再相加, 矩阵的第二行和 矩阵的每一行对应元素相乘然后再相加,以此类推就可以求出降维后的,m行k列的新矩阵数据:
就是降维后的数据,既然可以降维,那么我们也可从数学的角度将降维后的数据还原回去。 是m行k列的矩阵, 是k行n列的矩阵,所以 就是还原后的m行n列的原矩阵。那为什么说是从数学角度来说呢,因为毕竟已经从高维降到了低维,那势必会有丢失的数据信息,所以还原回去的数据也不可能和原始数据一样的。
我们在myML
中新建一个类PCA
:
import numpy as np
class PCA:
# 初始化PCA
def __init__(self, n_components):
assert n_components >= 1, "至少要有一个主成分"
self.n_components = n_components
self.component_ = None
# 训练主成分矩阵
def fit(self, X, eta=0.01, n_iters=1e4):
assert self.n_components
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?


微信扫码登录