协方差、奇异值分解、PCA降维代码实现
原理剖析
在上一篇关于降维的博客中我们已经讨论了协方差以及奇异值分解法的原理以及公式推导,在这里不在赘述,可以查看通俗易懂的机器学习——维度的诅咒(深入浅出表述机器学习降维的数学概念与实践)进行回顾。
数据选用
对于数据选用我们使用鸢尾花数据集以及瑞士卷数据集进行代码的实现以及效果的展示
为什么要使用这两个数据集呢?因为鸢尾花是机器学习入门者最常用的数据集之一,相对于多数人来讲更为熟悉,并且他的数据是四维数据,满足需要降维的条件。但是由于我们无法通过画图的方式直观的观测四维数据的分布效果,所以在此我们引入了瑞士卷数据集
鸢尾花数据观测
既然鸢尾花数据无法通过画图的方式直观的观测数据,那为什么还有画图观察呢?首先从习惯上来讲我们首先应该观测数据集,其次我们可以选用其中一部分数据大致观测一下数据的分布情况
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from warnings import simplefilter
simplefilter(action='ignore', category=FutureWarning)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号
iris = datasets.load_iris() #拿到莺尾花数据
X = iris.data[:,2:] #莺尾花的萼片长宽,花瓣长宽,这里只提取花瓣长宽数据
y = iris.target #莺尾花的类别
plt.scatter(X[y==0,0],X[y==0,1])
plt.scatter(X[y==1,0],X[y==1,1])
plt.scatter(X[y==2,0],X[y==2,1])
plt.xlabel('花瓣长')
plt.ylabel('花瓣宽')
plt.