作业一:PCA降维练习
【题目】
1.现有我国大陆30个省、直辖市、自治区的经济发展状况数据集如表所示,包括8项经济指标:国民生产总值(A1);居民消费水平(A2);固定资产投资(A3);职工平均工资(A4);货物周转量(A5);居民消费指数(A6);商品零售价格指数(A7);工业总产值(A8),试用基本PCA方法将这8项经济指标融合成3项综合指标。
【要求】
1.写出PCA完成降维的主要步骤;
2.详细写出题目降维的计算过程;
3.请大家在博客中直接完成或在作业本上完成后拍照上传。
##PCA降维的主要步骤:
- 去除平均值,进行中心化。
- 计算协方差矩阵
- 计算协方差矩阵的特征值和特征向量
- 将特征值按大小从上到下按行排列
- 降维
实验步骤:
一、导入数据
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

浙公网安备 33010602011771号