一、实验要求
在计算机上验证和测试sklearn的相关降维和主成分分析算法。
- 实验目的
1、掌握降维分析算法的原理
2、掌握sklearn如何实现降维分析;
三、实验内容
实验步骤
- 请阅读降维分析的参考代码,完成sklearn对莺尾花4维数据降维为2维,分别用协方差矩阵和sklearn中PCA的方式。
协方差(Covariance)是度量两个变量的变动的同步程度,也就是度量两个变量线性相关性程度。如果两个变量的协方差为0,则统计学上认为二者线性无关。注意两个无关的变量并非完全独立,只是没有线性相关性而已。
代码示例
X1 = iris.data #原始4维数据
X1cov=np.cov(X1.T)#计算协方差矩阵
eig,featueVector = np.linalg.eig(X1cov) #对协方差矩阵进行,特征值和特征向量提取
eig,featueVector
#取前2个特征向量,就是降为2维数据
X1new = X1.dot(featueVector[:,:2]) #原始数据,在特征向量坐标系进行重新投影
X1new
#画出前2个特征的散点图
plt.scatter(X1new[y==0,0],X1new[y==0,1])
plt.scatter(X1new[y==1,0],X1new[y==1,1])
plt.scatter(X1new[y==2,0],X1new[y==2,1])
plt.ylim([-10,1.5])
plt.grid()
plt.xlabel('新特征1')
plt.ylabel('新特征2')
plt.show()
主成分分析(Principal Component Analysis,PCA)是最常用的一种降维方法,通常用于高维数据集的探索与可视化,还可以用作数据压缩和预处理等。矩阵的主成分就是其协方差矩阵对应的特征向量,按照对应的特征值大小进行排序,最大的特征值就是第一主成分,其次是第二主成分,以此类推。
代码示例
X1 = iris.data #原始4维数据
#降维为2维
pca = PCA(n_components=2)
pca.fit(X1)
X1new = pca.transform(X1)
plt.scatter(X1new[y==0,0],X1new[y==0,1],c='r',marker='x')
plt.scatter(X1new[y==1,0],X1new[y==1,1],c='b',marker='D')
plt.scatter(X1new[y==2,0],X1new[y==2,1],c='g',marker='.')
plt.ylim([-2,1.5])
plt.grid()
plt.xlabel('新特征1')
plt.ylabel('新特征2')
plt.show()
四、实验总结
1. 降维可以缓解维度灾难问题;
2. 降维可以在压缩数据的同时让信息损失最小化;
3. 理解几百个维度的数据结构很困难,两三个维度的数据通过可视化更容易理解。