第四章:降维处理:pca和svd 一、pca 1.pca降维是如何实现的? 2.代码 二、SVD 1.svd 三、降维和特征选择都是特征工程技术,有什么区别?

一、pca

pca使用的信息衡量指标就是样本的方差。
方差越大,所携带的信息量越多:
在这里插入图片描述

1.pca降维是如何实现的?

class sklearn.decomposition.PCA

  • 参数:
    n_components:降维后所需要的维度。要小于特征数量。如果是需要可视化,一般就是2,或者3.
    copy:
    whiten:
    svd_solver:
    random_state:

降维原理:用二维举例:

若是所有的点都来自于y=x这条线,它是二维的,若他顺时针旋转了45°,这样就是在坐标轴上的一条直线。此时它变成了一维。只需要y`=0这条线。并且这条线上的所有的点的距离比例是没有改变的。(即保留了原本的信息)

2.代码

from matplotlib import pyplot as pt
from sklran.datasets import load_iris as li
from sklean.decomposition import PCA pa pca

//提取数据集
iris=li()
y=iris.target
x=iris.data
print(x.shape)  //15042import pandas as pd
pd.DataFrame(x)  //在特征矩阵中,维度是特征的数量,4-2维 降维

//降维
pca=pca(n_components=2)
x_new=pca.fit_transform(x)

print(y)  //y是012三种类型
colors=["red","black","orange"]
print(iris.target_names)

pt.figure(figsize=(20,8))
for i in[0,1,2]:
 pt.scatter(x[y==i,0],x[y==i,1],alpha=.7,c=colors[i],label=iris.target_names[i])
pt.legend()
pt.title(;pca of iris dataset')
pt.show()

如何查看所带信息量:

pca=pca().fit(x)
print(pca.explained_variance_ratio_)

返回信息:在这里插入图片描述
即每个特征占总特征的比值。累加起来就知道这4维特征所占所有信息的比例。

二、SVD

PCA和SVD是两种不同的降维算法,但他们都遵从上面的过程来实现降维,只是两种算法中矩阵分解的方法不同,信息量的衡量指标不同罢了。

PCA使用方差作为信息量的衡量指标,并且特征值分解来找出空间V。降维时,它会通过一系列数学的神秘操作(比如说,产生协方差矩阵)将特征短阵X分解为三个矩阵,其中一个只有对角线上有值的就是方差矩阵。

降维完成之后,PCA找到的每个新特征向量就叫做“主成分”,而被丢弃的特征向量被认为信息量很少,这些信息很可能就是噪音

扫描二维码关注公众号,回复: 16811071 查看本文章

1.svd

奇异值分解

三、降维和特征选择都是特征工程技术,有什么区别?

特征工程中有三种方式:特征提取,特征创造和特征选择。特征选择是从已存在的特征中选取携带信息最多的,选完之后的特征依然具有可解释性。

而降维算法,是将已存在的特征进行压缩,降维完毕后的特征不是原本的特征矩阵中的任何一个特征,而是通过某些方式组合起来的新特征。通常来说,**在新的特征矩阵生成之前,我们无法知晓降维算法们都建立了怎样的新特征向量,新特征矩阵生成之后也不具有可读性,**我们无法判断新特征矩阵的特征是从原数据中的什么特征组合而来,新特征虽然带有原始数据的信息,却已经不是原数据上代表着的含义了。降维算法因此是特征创造 (feature creation,或feature construction) 的一种。

可以想见,PCA一般不适用于探索特征和标签之间的关系的模型(如线性回归),因为无法解释的新特征和标签之间的关系不具有意义。在线性回归模型中,我们使用特征选择。

猜你喜欢

转载自blog.csdn.net/qq_53982314/article/details/131244829