作业一:PCA降维练习
作业一:PCA降维练习
【题目】
1.现有我国大陆30个省、直辖市、自治区的经济发展状况数据集如表所示,包括8项经济指标:国民生产总值(A1);居民消费水平(A2);固定资产投资(A3);职工平均工资(A4);货物周转量(A5);居民消费指数(A6);商品零售价格指数(A7);工业总产值(A8),试用基本PCA方法将这8项经济指标融合成3项综合指标。
【要求】
1.写出PCA完成降维的主要步骤;
2.详细写出题目降维的计算过程;
3.请大家在博客中直接完成或在作业本上完成后拍照上传。
我国大陆经济发展状况数据 | ||||||||
A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | |
北京 | 1394.89 | 2505 | 519.01 | 8144 | 373.9 | 117.3 | 112.6 | 843.43 |
天津 | 920.11 | 2720 | 345.46 | 6501 | 342.8 | 115.2 | 110.6 | 582.51 |
河北 | 2849.52 | 1258 | 704.87 | 4839 | 2033.3 | 115.2 | 115.8 | 1234.85 |
山西 | 1092.48 | 1250 | 290.9 | 4721 | 717.3 | 116.9 | 115.6 | 697.25 |
内蒙古 | 832.88 | 1387 | 250.23 | 4134 | 781.7 | 117.5 | 116.8 | 419.39 |
辽宁 | 2793.37 | 2397 | 387.99 | 4911 | 1371.1 | 116.1 | 114 | 1840.55 |
吉林 | 1129.2 | 1872 | 320.45 | 4430 | 497.4 | 115.2 | 114.2 | 762.47 |
黑龙江 | 2014.53 | 2334 | 435.73 | 4145 | 824.8 | 116.1 | 114.3 | 1240.37 |
上海 | 2462.57 | 5343 | 996.48 | 9279 | 207.4 | 118.7 | 113 | 1642.95 |
江苏 | 5155.25 | 1926 | 1434.95 | 5934 | 1025.5 | 115.8 | 114.3 | 2026.64 |
浙江 | 3524.79 | 2249 | 1006.39 | 6619 | 754.4 | 116.6 | 113.5 | 916.59 |
安徽 | 2003.58 | 1254 | 474 | 4609 | 908.3 | 114.8 | 112.7 | 824.14 |
福建 | 2160.52 | 2320 | 553.97 | 5857 | 609.3 | 115.2 | 114.4 | 433.67 |
江西 | 1205.1 | 1182 | 282.84 | 4211 | 411.7 | 116.9 | 115.9 | 571.84 |
山东 | 5002.34 | 1527 | 1229.55 | 5145 | 1196.6 | 117.6 | 114.2 | 2207.69 |
河南 | 3002.74 | 1034 | 670.35 | 4344 | 1574.4 | 116.5 | 114.9 | 1367.92 |
湖北 | 2391.42 | 1527 | 571.68 | 4685 | 849 | 120 | 116.6 | 1220.72 |
湖南 | 2195.7 | 1408 | 422.61 | 4797 | 1011.8 | 119 | 115.5 | 843.83 |
广东 | 5381.72 | 2699 | 1639.83 | 8250 | 656.5 | 114 | 111.6 | 1396.35 |
广西 | 1606.15 | 1314 | 382.59 | 5150 | 556 | 118.4 | 116.4 | 554.97 |
海南 | 364.17 | 1814 | 198.35 | 5340 | 232.1 | 113.5 | 111.3 | 64.33 |
四川 | 3534 | 1261 | 822.54 | 4645 | 902.3 | 118.5 | 117 | 1431.81 |
贵州 | 630.07 | 942 | 150.84 | 4475 | 301.1 | 121.4 | 117.2 | 324.72 |
云南 | 1206.68 | 1261 | 334 | 5149 | 310.4 | 121.3 | 118.1 | 716.65 |
西藏 | 55.98 | 1110 | 17.87 | 7382 | 4.2 | 117.3 | 114.9 | 5.57 |
陕西 | 1000.03 | 1208 | 300.27 | 4396 | 500.9 | 119 | 117 | 600.98 |
甘肃 | 553.35 | 1007 | 114.81 | 5493 | 507 | 119.8 | 116.5 | 468.79 |
青海 | 165.31 | 1445 | 47.76 | 5753 | 61.6 | 118 | 116.3 | 105.8 |
宁夏 | 169.75 | 1355 | 61.98 | 5079 | 121.8 | 117.1 | 115.3 | 114.4 |
新疆 | 834.57 | 1469 | 376.95 | 5348 | 339 | 119.7 | 116.7 | 428.76 |
1,导入数据
import pandas as pd
import numpy as np
data=pd.read_excel("D:/tools/SHIYAN/4/jqxx/sj.xlsx",header=None)
data=data[2:]
lieming=['province','A1','A2','A3','A4','A5','A6','A7','A8']
data.columns=lieming
data = data[['A1','A2','A3','A4','A5','A6','A7','A8']]
print(data)
2.去中心化:每个数据减去对应每列的平均值
sample,feature=data.shape
data = data - np.mean(data)
data
3.计算协方差矩阵
data1 = np.mat(data)
data1 = data1.astype('float16')
# 计算协方差矩阵
covX = np.cov(data1.T)
covX
4.求特征值和特征向量
eig_val, eig_vec = np.linalg.eig(covX)
eig_pairs = [(np.abs(eig_val[i]), eig_vec[:, i]) for i in range(feature)]
eig_val
5.将特征值由大到小排序
index = np.argsort(-eig_val)
np.argsort(eig_val)
6.降维
k = 3
selectVec = np.matrix(eig_vec.T[index[:k]])
finalData = data1 * selectVec.T
finalData.shape
finalData
PCA降维的主要步骤:
- 去除平均值,进行中心化。
- 计算协方差矩阵
- 计算协方差矩阵的特征值和特征向量
- 将特征相量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
- Y=PX 得到降维后的数据Y
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律