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

本实验包含以下内容:

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

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

代码如下:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import pytab as pt


def 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, corr


df = pd.read_excel("农村居民人均可支配收入来源2016.xlsx", header=0, index_col=0)  # 读取文件,并存入df
np.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'}  # 大小 16
plt.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.05120033 -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.44220208   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与工资性收入和资产净收入高度相关

 

 

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在面试中,如果被问到只会复制粘贴的情况,可以通过以下方式回答: 首先,可以表达对于这个问题的理解和思考。可以说复制粘贴是电脑最普遍的操作之一,而且电脑本身的复制粘贴功能已经经过充分的测试和使用,所以在正常情况下并不需要专门测试复制粘贴功能。 然后,可以提到如果要测试复制粘贴功能,通常是在公司开发的一款数据存储或迁移软件中进行。在这种情况下,可以设计以下测试方案: 1. 复制文本信息:测试复制单个文本、多个文本,以及各种数字、字母、汉字的组合,还可以测试复制超长的文本等情况。 2. 复制图片:测试复制单个图片、多个图片,以及一个文件夹中所有的图片,还可以测试复制不同格式的图片,如JPG、PNG、GIF等。 3. 复制视频:测试复制单个视频、多个视频,以及一个文件夹中所有的视频,还可以测试复制不同格式的视频,如AVG、RMVB等。 4. 复制文件:测试复制单个文件、多个文件,以及文件夹中的所有文件,还可以测试不同类型的文件,如bat、java、xls、slsx、doc、docx等。 5. 复制整个文件夹:测试复制文件夹是否正常复制。 6. 复制的载体:测试复制网站内容、本地Word文档等不同类型的复制。 接下来,可以提到粘贴是将复制的内容或文件粘贴到开发的软件中,然后观察粘贴后的现象是否满足预期效果。例如,粘贴文本信息时,软件是否正确显示对应的信息;粘贴图片时,软件是否能够解析并展示图片;粘贴视频时,是否能够上传并展示视频等。 最后,可以提到在测试过程中,还可以考虑优化功能,如展示功能可以做成会员专属,还可以根据用户画像进行可行性调研。 综上所述,即使只会复制粘贴,也可以通过思考和设计测试方案来回答面试问题。 #### 引用[.reference_title] - *1* *3* [SpringBoot面试题及答案140道(2021年最新)](https://blog.csdn.net/u012889902/article/details/120850410)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [如何测试复制粘贴功能](https://blog.csdn.net/qq_60219215/article/details/118883402)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值