作业一:PCA降维练习

【题目】

1.现有我国大陆30个省、直辖市、自治区的经济发展状况数据集如表所示,包括8项经济指标:国民生产总值(A1);居民消费水平(A2);固定资产投资(A3);职工平均工资(A4);货物周转量(A5);居民消费指数(A6);商品零售价格指数(A7);工业总产值(A8),试用基本PCA方法将这8项经济指标融合成3项综合指标。

【要求】

1.写出PCA完成降维的主要步骤;

2.详细写出题目降维的计算过程;

3.请大家在博客中直接完成或在作业本上完成后拍照上传。

 

 

##PCA降维的主要步骤:

  1. 去除平均值,进行中心化。
  2. 计算协方差矩阵
  3. 计算协方差矩阵的特征值和特征向量
  4. 将特征值按大小从上到下按行排列
  5. 降维

实验步骤:

一、导入数据

1 import pandas as pd
2 import openpyxl
3 import numpy as np
4 data = pd.read_excel("C:/Users/luxury/Desktop/我国大陆经济发展状况数据.xlsx",header=None,engine='openpyxl')
5 data = data [2:]
6 data = data[[1,2,3,4,5,6,7,8]]
7 data

 

 

二、去中心化

1 sample,feature=data.shape
2 data = data - np.mean(data)
3 data

 

 

 

 

三、计算协方差矩阵

 

1 data1 = np.mat(data)
2 data1 = data1.astype('float16') 
3 covX = np.cov(data1.T)
4 covX

 

 

 

 

 

四、求特征值和特征向量

1 eig_val, eig_vec = np.linalg.eig(covX)
2 eig_pairs = [(np.abs(eig_val[i]), eig_vec[:, i]) for i in range(feature)]
3 eig_val

 

 

 

 

 

五、将特征值由大到小排序

1 index = np.argsort(-eig_val)
2 np.argsort(eig_val)

 

 

 

 

六、降维

1 k = 3
2 selectVec = np.matrix(eig_vec.T[index[:k]])
3 finalData = data1 * selectVec.T # (30, 8) * (8, 3) = (30, 3)
4 finalData.shape
5 finalData

 

 

 

posted @ 2022-11-04 13:15  201613344  阅读(38)  评论(0)    收藏  举报