主成分分析 python, sklearn_python主成分分析sklearn_心态与习惯的博客-程序员秘密

技术标签: 主成分分析  python  统计学/机器学习  sklearn  Python  pca  

六月份似乎太忙,将近一个月没有写博客,于是挑一个多元统计分析中的方法写一篇 python 操作实现的。

主成分分析(Principle Component Analysis, PCA)是数据降维的一个方法:原始数据中有很多特征变量,可以采用主成分分析方法将原始数据降维为少数几个变量,主成分就是降维后各原始变量的线性组合系数。

主成分分析的求解一般采用特征根分解,即求解原始数据协方差矩阵或相关系数矩阵最大特征根对应的特征向量,即为第一主成分,第二主成分为第二大特征根对应的特征向量,其他的主成分可以依次得出。主成分贡献率为对应特征根占所有特征根加和的比例。(特征向量使得降维后数据的方差最大,因此保留了原始变量尽可能多的信息,数学原理中用到了瑞利定理的结论)

采用 python 主成分分析时,常用的包为 Sklearn,其他一些包也能做(例如 matplotlib.mlab.PCA)。需要注意的是

  • 最好对原始数据进行标准化
  • sklearn 计算主成分时使用的是协方差矩阵,而不是相关系数矩阵。

举例,下面一个统计数据:

食品 衣着 居住 家庭设备 交通通讯 文教娱乐 医疗保健 其他
北 京 1736 379 854 327 615 797 504 103
天 津 1171 257 614 117 328 329 179 40
河 北 888 156 399 101 222 226 135 39
山 西 830 202 201 69 160 280 103 33
内蒙古 1054 150 335 84 293 309 176 44
辽 宁 1127 221 378 100 301 377 234 68
吉 林 1003 168 257 82 285 261 194 56
黑龙江 924 184 527 74 257 277 254 49
上 海 2684 366 1320 458 748 937 562 204
江 苏 1569 191 512 168 364 479 199 85
浙 江 2061 319 914 260 618 723 416 121
安 徽 1000 117 345 106 197 257 134 41
福 建 1518 187 457 154 366 357 154 100
江 西 1221 125 326 96 230 276 155 56
山 东 1088 160 446 137 294 377 188 46
河 南 859 132 318 83 160 178 123 39
湖 北 1192 125 310 110 223 272 135 62
湖 南 1433 128 307 114 219 329 168 58
广 东 1789 144 530 152 412 361 204 116
广 西 1187 79 380 95 214 226 123 44
海 南 1135 66 146 92 178 199 93 60
重 庆 1130 96 231 96 163 250 143 33
四 川 1244 116 234 102 172 225 144 36
贵 州 820 80 236 62 99 161 72 24
云 南 976 80 226 67 100 183 122 35
西 藏 1185 182 84 81 79 28 44 39
陕 西 813 124 212 84 163 297 166 38
甘 肃 859 92 241 74 155 258 114 27
青 海 893 156 329 84 208 110 152 43
宁 夏 923 143 346 77 178 178 199 51
新 疆 804 171 333 68 183 159 169 36

对其主成分分析的 Python 代码为:

from sklearn.decomposition import PCA
from sklearn.preprocessing import scale
import pandas as pd
import numpy as np


df = pd.read_excel(r'D:\Users\chen_\git\Statistics-book\datas\data-pca.xlsx', index_col=0) # 读取数据
data = scale(df.values) # 标准化,标准化之后就自动根据协方差矩阵进行主成分分析了
# data2 = np.corrcoef(np.transpose(data)) # 没有必要单独计算协方差阵或相关系数阵
pca = PCA() # 可以调整主成分个数,n_components = 1
pca.fit(data)
print(pca.explained_variance_) # 输出特征根
print(pca.explained_variance_ratio_) # 输出解释方差比
print(pca.components_) # 输出主成分

输出结果:

[7.32679152 0.46898546 0.16208403 0.1035709 0.07520292 0.06908562
0.04006575 0.02088048]

[0.88630543 0.05673211 0.01960694 0.01252874 0.00909713 0.00835713
0.00484666 0.00252586]

[[ 0.34197826 0.32541509 0.36029958 0.36486138 0.3682146 0.36096996
0.35616496 0.34854195]
[ 0.54451489 -0.61527353 -0.11520953 0.11674732 -0.03494752 -0.07480108
-0.2943857 0.4522824 ]
[ 0.27960446 0.69192655 -0.19973533 -0.07235855 -0.02963776 -0.42452329
-0.39881297 0.24037227]
[-0.21745238 -0.1359657 0.65924912 -0.30353519 0.15040126 -0.53935545
0.07814873 0.29639958]
[-0.15267545 -0.0164215 -0.46139281 -0.58549298 0.44015111 0.1955926
0.1948895 0.38828316]
[ 0.16110958 -0.00739226 0.32020717 -0.29565015 0.42815873 0.33310541
-0.60500836 -0.35175729]
[ 0.63371524 -0.02206104 -0.01490419 -0.36536854 0.00175525 -0.23513962
0.46603443 -0.43785863]
[-0.10113902 -0.13222512 -0.25839752 0.43837388 0.68017775 -0.4341369
0.01092949 -0.2492196 ]]

转载于个人公众号:Python 统计分析与数据科学

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/robert_chen1988/article/details/106943471

智能推荐

STM32 FSMC 总结_fsmc_nl_yskcg的博客-程序员秘密

背景做DP开发过程中,需要将DP芯片和ARM芯片进行通信,一般有两种方式:1)IO端口(总线)方式来进行通信;2)FSMC-存储器映射方式来进行通信;之前的开发是采用第一种方式在F103芯片上开发,现在换F4平台,采用第二种方式来进行交互数据。FSMC的基础FSMC功能是类似51单片机的存储器映射功能,能管理多个外部不同种类的存储设备,具有方...

Linux和开源已经在2013年开始悄悄主宰世界_anwvkp1505的博客-程序员秘密

提到Linux,很多人觉得它依旧不温不火,实际上在这个即将过去的一年,Linux和开源软件已经悄悄主宰了计算领域的各方面,这具体表现在开源项目遍地、Chromebook崛起、SteamOS备受瞩目、Android统治世界和云无处不在。Linux在一些计算领域已经统治了不少年,比如说在超级计算机上,而在2013年,这个即将过去的一年,Linux和开源软件开始悄悄主宰了计算领域的...

DI与IOC——控制反转容器和依赖注入模式_iaiti的博客-程序员秘密

struts忘了好多,重拾一下,这次就不用二手资料了,自己直接上官网看一手资料。

linux 可执行文件创建 学习笔记_titer1的博客-程序员秘密

编译链接 ELF 可执行文件格式sys_execve

多种TNS报错总结--监听器及tnsnames.ora配置文件多种出错总结_怎么检查tnsnames.ora是否正确_Yushan Bai的博客-程序员秘密

本地命名的配置:.本地名可以用简单的名称访问到所需的数据库或服务器所需的信息,而这些信息保存到了tnsnames.ora中. LOCALNAME: 本地名称ADDRESS: 服务器地址PROTOCOL: 使用协议HOST: IP地址PORT: 监听端口SERVICE_NAME: 数据库服务名称首先要保证tnsnames.ora文件中的格式正确,如=号、空格、括号之类

怎么购买苹果教育优惠产品?苹果在线商店购买教育优惠产品的具体流程_热爱生活的小明的博客-程序员秘密

很多大学生在开心之际都准备入手一款iPhone,iPad或者macbook,有的同学想使用Apple 教育优惠价格购买,可又不知道怎么操作。接下来小编就和大家一起探讨下苹果在线商店购买教育优惠产品的具体流程。很多人不知道苹果,官网有针对高校师生的教育优惠购政策,对象是全日制在校大学生、高考或考研结束已获得高校录取通知书的预大学生或者研究生、以及教育机构或学校的在职教师!并且教育优惠只能用于电脑Mac或者平板ipad的购买,不能用于手机和手表的购买!进入正题,如何购买!1、进入苹果官网(官网!不是XX官

随便推点

Camera 主观测试经验 --- Good_camera主观测试和客观测试_zmjames2000的博客-程序员秘密

come from :https://max.book118.com/html/2016/0802/50061502.shtm白平衡:只要保证白色的物体在画面中呈现出准确的,没有偏色的白,那么画面中所有的其他颜色就会得到准确的还原。ISO: iso越高能得到更快的快门速度, 但噪点会随之增加。 iso越低能带来更细腻的成像质量。清晰度反映图片平面清晰度和图像边缘锐...

STM32F1和STM32F4 区别_stm32f1系列和stm32f4系列微控制器分别使用( )和( _netccy的博客-程序员秘密

转载至:http://www.51testing.com/html/54/238554-858686.htmlu  F1采用Crotex M3内核,F4采用Crotex M4内核。u  F1最高主频 72MHz, F4最高主频168MHz。u  F4具有单精度浮点运算单元,F1没有浮点运算单元。u  F4的具备增强的DSP指令集。F4的执行16位DSP指令的时间只有F1的3

【LeetCode】90. Subsets II 解题报告(Python & C++)_负雪明烛的博客-程序员秘密

【LeetCode】90. Subsets II 解题报告(Python)标签(空格分隔): LeetCode题目地址:https://leetcode.com/problems/subsets-ii/description/题目描述:Given a collection of integers that might contain duplicates, nums, re...

java.lang.ClassNotFoundException: javax.servlet.ServletContext解决办法_畅游码海的博客-程序员秘密

1.原因:在Intellij IDEA中默认所有 scope 为 provided 的依赖不会被加入到 classpath;所以在编译器启动spring boot 项目时,会由于某些依赖加载不到而报javax.servlet.ServletContext 异常2.解决方法:

常用U-BOOT命令介绍_uebos命令_caimouse的博客-程序员秘密

常用U-BOOT命令介绍1. 得到所有命令列表2. help: help usb, 列出USB功能的使用说明3. ping:注:只能开发板PING别的机器4. setenv: 设置互环境变量:5. setenv serverip 192.168.0.16. setenv ipaddr 192.168.0.567. setenv bootcmd ‘tftp 32000000

推荐文章

热门文章

相关标签