技术标签: 主成分分析 python 统计学/机器学习 sklearn Python pca
六月份似乎太忙,将近一个月没有写博客,于是挑一个多元统计分析中的方法写一篇 python 操作实现的。
主成分分析(Principle Component Analysis, PCA)是数据降维的一个方法:原始数据中有很多特征变量,可以采用主成分分析方法将原始数据降维为少数几个变量,主成分就是降维后各原始变量的线性组合系数。
主成分分析的求解一般采用特征根分解,即求解原始数据协方差矩阵或相关系数矩阵最大特征根对应的特征向量,即为第一主成分,第二主成分为第二大特征根对应的特征向量,其他的主成分可以依次得出。主成分贡献率为对应特征根占所有特征根加和的比例。(特征向量使得降维后数据的方差最大,因此保留了原始变量尽可能多的信息,数学原理中用到了瑞利定理的结论)
采用 python 主成分分析时,常用的包为 Sklearn,其他一些包也能做(例如 matplotlib.mlab.PCA)。需要注意的是
举例,下面一个统计数据:
食品 | 衣着 | 居住 | 家庭设备 | 交通通讯 | 文教娱乐 | 医疗保健 | 其他 | |
---|---|---|---|---|---|---|---|---|
北 京 | 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 统计分析与数据科学
背景做DP开发过程中,需要将DP芯片和ARM芯片进行通信,一般有两种方式:1)IO端口(总线)方式来进行通信;2)FSMC-存储器映射方式来进行通信;之前的开发是采用第一种方式在F103芯片上开发,现在换F4平台,采用第二种方式来进行交互数据。FSMC的基础FSMC功能是类似51单片机的存储器映射功能,能管理多个外部不同种类的存储设备,具有方...
提到Linux,很多人觉得它依旧不温不火,实际上在这个即将过去的一年,Linux和开源软件已经悄悄主宰了计算领域的各方面,这具体表现在开源项目遍地、Chromebook崛起、SteamOS备受瞩目、Android统治世界和云无处不在。Linux在一些计算领域已经统治了不少年,比如说在超级计算机上,而在2013年,这个即将过去的一年,Linux和开源软件开始悄悄主宰了计算领域的...
struts忘了好多,重拾一下,这次就不用二手资料了,自己直接上官网看一手资料。
编译链接 ELF 可执行文件格式sys_execve
本地命名的配置:.本地名可以用简单的名称访问到所需的数据库或服务器所需的信息,而这些信息保存到了tnsnames.ora中. LOCALNAME: 本地名称ADDRESS: 服务器地址PROTOCOL: 使用协议HOST: IP地址PORT: 监听端口SERVICE_NAME: 数据库服务名称首先要保证tnsnames.ora文件中的格式正确,如=号、空格、括号之类
很多大学生在开心之际都准备入手一款iPhone,iPad或者macbook,有的同学想使用Apple 教育优惠价格购买,可又不知道怎么操作。接下来小编就和大家一起探讨下苹果在线商店购买教育优惠产品的具体流程。很多人不知道苹果,官网有针对高校师生的教育优惠购政策,对象是全日制在校大学生、高考或考研结束已获得高校录取通知书的预大学生或者研究生、以及教育机构或学校的在职教师!并且教育优惠只能用于电脑Mac或者平板ipad的购买,不能用于手机和手表的购买!进入正题,如何购买!1、进入苹果官网(官网!不是XX官
come from :https://max.book118.com/html/2016/0802/50061502.shtm白平衡:只要保证白色的物体在画面中呈现出准确的,没有偏色的白,那么画面中所有的其他颜色就会得到准确的还原。ISO: iso越高能得到更快的快门速度, 但噪点会随之增加。 iso越低能带来更细腻的成像质量。清晰度反映图片平面清晰度和图像边缘锐...
(实验37)单片机,STM32F4学习笔记,代码讲解【内存管理实验】【正点原子】【原创】
转载至: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)标签(空格分隔): LeetCode题目地址:https://leetcode.com/problems/subsets-ii/description/题目描述:Given a collection of integers that might contain duplicates, nums, re...
1.原因:在Intellij IDEA中默认所有 scope 为 provided 的依赖不会被加入到 classpath;所以在编译器启动spring boot 项目时,会由于某些依赖加载不到而报javax.servlet.ServletContext 异常2.解决方法:
常用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