200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 使用python进行数据预处理--主成分分析

使用python进行数据预处理--主成分分析

时间:2020-04-04 08:58:28

相关推荐

使用python进行数据预处理--主成分分析

本实验包含以下内容:

对提供的数据集——农村居民人均可支配收入来源——进行主成分分析,并分析结果。

农村居民人均可支配收入来源.xlsx 上传不了,这里就不提供下载了。

代码如下:

import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport pytab as ptdef zhuchengfenfenxi(X_T):# 主成分分析需要进入的数据每一维是一个行向量,所以这里的输入是X_T(类型:矩阵)X = X_T.T # X是X_T的转置for i in range(len(X)): # 对X的每一行(每一维)进行零均值化X[i] = X[i] - np.mean(X[i]) # 零均值化 减去平均值C = X.dot(X.T) / (len(X[0]) - 1) # 求协方差阵 Cov = (X XT)/(n-1)# np.dot(a,b)求a,b矩阵乘积。[l1, l2] = np.linalg.eig(C) # 求特征值和特征向量# 下面三行按特征向量的对应特征值大小从上到下按行排序成矩阵l = [(l1[i], l2.T[i]) for i in range(len(l1))] # 合并特征向量和特征值l.sort(key=lambda x: x[0], reverse=True) # sort排序,key接受一个函数返回值,reverse 从大到小U = np.array([list(i[1]) for i in l]) # 去掉第一个数得到矩阵matrix = U.T.dot(X) # 新坐标系下的坐标corr = np.round(np.corrcoef(X, matrix), 4) # 相关系数,取四位小数return matrix.T, corrdf = pd.read_excel("农村居民人均可支配收入来源.xlsx", header=0, index_col=0) # 读取文件,并存入dfnp.set_printoptions(suppress=True) # 输出不用科学计数法print(df) # 输出一下看看df_np = np.array(df)data, corr = zhuchengfenfenxi(df_np) # 取全部数值,扔进函数处理print('\n主成分:===========================================\n', data)# 原属性与主成分的相关性分析:chart = {'原属性': []} # 字典,用于绘制表格for i in range(len(data[0])): # 这里是4个列+1列原属性chart['原属性'].append(df.columns[i]) # 原属性添加一个chart['F' + str(i)] = corr[len(data[0]) + i, :len(data[0])]# 下面这里用于正确显示中文,不要换位置font = {'family': 'SimHei', # 黑体'weight': 'bold', # 粗体'size': '16'} # 大小 16plt.rc('font', **font)plt.rc('axes', unicode_minus=False)# 绘制表格pt.table(data=chart,th_type='dark',table_type='striped')print('主成分0与工资性收入和资产净收入高度相关')print('主成分1与经营净收入高度相关')print('主成分2与转移净收入高度相关')print('主成分3与工资性收入和资产净收入高度相关')# 绘图 =============================================# 定义图像和三维格式坐标轴plt.figure(2)m = plt.axes(projection='3d') # 绘制3d图形m.scatter3D(df_np[:, 0], df_np[:, 1], df_np[:, 2], alpha=0.8) # 前三个原属性,绘制散点图plt.figure(3)n = plt.axes(projection='3d') # 绘制3d图形n.scatter3D(data[:, 0], data[:, 1], data[:, 2], alpha=0.8) # 前三个主成分,绘制散点图pt.show()

结果示例:

工资性收入 经营净收入 财产净收入 转移净收入地区 北京 16637.5 2061.9 1350.1 2260.0天津 12048.1 5309.4 893.7 1824.4河北 6263.2 3970.0 257.5 1428.6山西 5204.4 2729.9 149.0 1999.1内蒙古 2448.9 6215.7 452.6 2491.7辽宁 5071.2 5635.5 257.6 1916.4吉林 2363.1 7558.9 231.8 1969.1黑龙江 2430.5 6425.9 572.7 2402.6上海 18947.9 1387.9 859.6 4325.0江苏 8731.7 5283.1 606.0 2984.8浙江 14204.3 5621.9 661.8 2378.1安徽 4291.4 4596.1 186.7 2646.2福建 6785.2 5821.5 255.7 2136.9江西 4954.7 4692.3 204.4 2286.4山东 5569.1 6266.6 358.7 1759.7河南 4228.0 4643.2 168.0 2657.6湖北 4023.0 5534.0 158.6 3009.3湖南 4946.2 4138.6 143.1 2702.5广东 7255.3 3883.6 365.8 3007.5广西 2848.1 4759.2 149.2 2603.0海南 4764.9 5315.7 139.1 1623.1重庆 3965.6 4150.1 295.8 3137.3四川 3737.6 4525.2 268.5 2671.8贵州 3211.0 3115.8 67.1 1696.3云南 2553.9 5043.7 152.2 1270.1西藏 2204.9 5237.9 148.7 1502.3陕西 3916.0 3057.9 159.0 2263.6甘肃 2125.0 3261.4 128.4 1942.0青海 2464.3 3197.0 325.2 2677.8宁夏 3906.1 3937.5 291.8 1716.3新疆 2527.1 5642.0 222.8 1791.3主成分:===========================================[[11175.17747796 1145.31212344 642.42710542 1422.08187054][ 6241.20017059 -1473.51117445 -153.33283631 1008.2032531 ][ 765.25352128 564.78815198 -804.61833565 -112.3500915 ][ -137.69308575 1900.48909434 -245.9833908 -403.3232274 ][-3382.80191948 -1143.82227841 -31.66130276 80.32186517][ -670.25349718 -929.05941403 -442.55045685 -15.65986121][-3612.0513 -2464.02231119 -605.12565627 -14.89659893][-3430.32994147 -1333.0129521 -130.13569903 218.65548144][13452.02666602 1388.7190569 2855.13886238 1025.02150966][ 2914.98390346 -1065.88474492 829.98666818 526.84175662][ 8306.00730144 -2110.89098324 505.07456239 944.68806537][-1336.38923149 171.11790561 282.38586963 -231.10271063][ 984.08516096 -1348.59877703 -137.4428 107.12100035][ -674.36038211 -0.64675653 -44.74511439 -166.36722799][ -261.09855152 -1602.15690734 -596.03622886 176.54272133][-1405.30134944 130.92330895 288.78487097 -248.77153006][-1750.76169073 -729.66321542 596.29465814 -179.36974703][ -627.85087129 527.54773367 390.68944126 -279.49120279][ 1659.70914981 484.08973861 826.42129838 59.48726439][-2780.06785977 201.36901678 156.25683507 -340.45235706][ -906.01698684 -577.48261984 -739.07180973 -186.08078721][-1630.39166109 651.94896615 770.44151553 -183.04639871][-1878.84481668 323.27886353 280.22560126 -190.45588752][-2138.1707698 1787.67345363 -668.43993355 -570.20628923][-3032.11951723 -1.65349167 -1199.97656924 -337.61051391][-3416.9971888 -152.94653823 -994.0394551 -341.24740907][-1471.31816661 1744.02408916 -63.1456558 -437.26462557][-3248.01843791 1789.68452271 -487.24149817 -559.12584687][-2956.15375851 1808.00309747 266.04305426 -343.61354606][-1576.60275873 908.68350606 -642.9235171 -222.91398654][-3174.84970877 -594.30046461 -703.70068118 -205.61494266]]主成分0与工资性收入和资产净收入高度相关主成分1与经营净收入高度相关主成分2与转移净收入高度相关主成分3与工资性收入和资产净收入高度相关

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。