网易首页 > 网易号 > 正文 申请入驻

数学建模评价模型中主成分分析(PCA)SPSS&python实现

0
分享至

PCA介绍

主成分分析(Principal Component Analysis,PCA):利用降维的方法,把多指标转化为几个综合指标的多元统计方法;

实际问题中,为了全面分析问题,往往提出很多与此有关的变量(因素),每个变量在不同程度上包含了结果的部分信息;

主成分:由原始指标进行线性组合形成的几个新指标,用这几个新指标尽可能地去解释原来指标包含的大部分信息;

比如:一个对国民经济的研究,经过主成分分析后,用三个新变量能够代替原来的17个变量,并且保持97.4%的精度;

主成分与原始变量的关系:

主成分保留了原始变量绝大多数信息;

主成分的个数大大少于原始变量的数目;

各个主成分之间互不相关;

每个主成分都是原始变量的线性组合;

一般来说,代表原来m个变量的主成分不止一个,但不同主成分的信息不能相互包含,统计上的描述就是:两个主成分的协方差为0,几何上就是两个主成分正交;

SPSS实现

步骤:SPSS导入数据 -> 分析 -> 降维 -> 因子分析;描述 -> 系数;抽取 -> 碎石图;得分 -> 显示因子得分系数矩阵;

1.量纲

主成分分析的结果受量纲的影响,由于各变量的单位可能不同,结果也不同;这是最大的问题,所以主成分分析之前都需要对个变量进行无量纲化处理,然后用协方差 or 相关系数矩阵进行分析;SPSS在分析之前自带无量纲化处理了;

无量纲化处理一般分两种:

(1) 归一化

其一:min-max归一化 =>

其二:平均归一化 =>

(2) 标准化

SPSS手动无量纲化(标准化):分析 -> 描述统计 -> 描述 -> 勾选"将标准化得分另存为变量"

2.相关性矩阵

3.总方差解释

4.碎石图

5.求指标对应系数

方法一:利用成分矩阵+解释总方差求得

Fn前面的系数 就是拿 Fn的贡献率/(F1和F2的累计贡献率);比如F1前面的系数:(72.2/84.5);

方法二:利用成分得分系数矩阵(简单但不建议)

计算综合评价值 F=W1F1+W2F2;Wi 为第 i 主成分的贡献率;

比如方法一代入后最终结果如下:

比如方法二代入后最终结果如下:

python实现

简单的主成分分析

sklearn.decomposition模块的PCA函数sklearn.decomposition.PCA(n_components=None,copy=True)

n_components:缺省默认为None,所有成分被保留;若设为2,则提取2个主成分,若为0.85,则自动选择主成分,使满足累计贡献率85%;

copy:缺省默认为True,表示运行算法时,将原始数据复制一份进行分析;若为false,则在原始数据上进行降维计算;

步骤:

对数据矩阵A进行标准化得到B;

计算相关系数矩阵np.corrcoef(B.T);

计算相关系数矩阵R的特征值 λ1>λ2>…>λm ,以及对于的标准正交化特征向量 u1,u2…um,向量是按列的;利用特征变量得到主成分变量表达式 F1 = u11x1’+u21x2’…+um1ym,F2=…;

计算主成分贡献率和累计贡献率,一般取累计贡献率达到85%以上的主成分就行

利用得到的主成分F1,F2,…Fk分析问题,进行评价;

案例:

import numpy as np

from sklearn.decomposition import PCA

a = np.loadtxt("Pdata11_7.txt")

b = np.r_[a[:, 1:4], a[:, -3:]] # 构造数据矩阵

print("相关系数矩阵:", np.around(np.corrcoef(b.T), decimals=3)) # 数据标准化并计算相关系数矩阵,并保留三位小数

md = PCA(n_components=0.85).fit(b) # 构造并训练模型(累计贡献率>85%即可)

print("特征值为:", md.explained_variance_)

print("各主成分的贡献率:", md.explained_variance_ratio_)

print("奇异值为:", md.singular_values_)

print("各主成分的系数:\n", md.components_) # 每行是一个主成分

"""下面直接计算特征值和特征向量,和库函数进行对比"""

cf = np.cov(b.T) # 计算协方差阵

c, d = np.linalg.eig(cf) # 求特征值和特征向量

print("特征值为:", c)

print("特征向量为:\n", d)

print("各主成分的贡献率为:", c / np.sum(c))

分析评价:

主成分分析用于综合评价

主成分分析可应用于诸多评价领域,诸如投资组合风险管理、企业效益的综合分析、图像特征识别等;将主成分分析于聚类分析、判别分析以及回归分析方法相结合;

一般步骤:

若各指标的属性不同(成本型、利润型等),将原矩阵A标准化为B;

计算B的相关系数矩阵R;

计算 R 的特征值 λ 以及相应的特征向量 u;

根据特征值计算累计贡献率,确定主成分的个数,而特征向量 ui 就是第 i 主成分的系数向量;

计算主成分的得分矩阵,若选定 K 个主成分,则主成分得分矩阵为 F = B ·[u1,u2,···,uk];

计算综合评价值 Z=FW,其中 W 是第 i 主成分的贡献率(占总主成分贡献率的多少);根据综合评价值进行排序,若为效益型指标,则评价值越大排名越靠前;若为成本型指标值,则评价越小排名越靠前;

对于下列案例:

import numpy as np

from scipy.stats import zscore

a = np.loadtxt("Pdata11_8.txt")

print("相关系数阵为:\n", np.corrcoef(a.T))

b = np.delete(a, 0, axis=1) # 删除第1列数据

c = zscore(b)

r = np.corrcoef(c.T) # 数据标准化并计算相关系数阵

d, e = np.linalg.eig(r) # 求特征值和特征向量

rate = d / d.sum() # 计算各主成分的贡献率

print("特征值为:", d)

print("特征向量为:\n", e)

print("各主成分的贡献率为:", rate)

k = 1 # 提出主成分的个数

F = e[:, :k]

score_mat = c.dot(F) # 计算主成分得分矩阵

score1 = score_mat.dot(rate[0:k]) # 计算各评价对象的得分

score2 = -score1 # 通过表中数据以及score1观测,需要调整得分的正负号

print("各评价对象的得分为:", score2)

index = score1.argsort() + 1 # 排序后的每个元素在原数组中的位置

print("从高到低各个城市的编号排序为:", index)

Notice

主成分分析时,主成分的系数的正负号是不可控的,因为特征向量乘以 -1 仍然是特征向量,所以一定要根据实际问题判断系数要不要取相反数!主成分分析之前,一定要进行数据的标准化 or 归一化,一般是标准化;

官方培训:第七届“数维杯”数学建模夏令营倒计时12天

为了更好地服务参赛同学,提高参赛者的建模能力,暑期数维杯夏令营开班啦!数维杯数夏令营每年举办一届,已经连续举办七届,已成为高校数学建模培训示范性基地,属于系统性的数学建模学习,主要针对国赛美赛等其它区域赛,采用分班教学,专家教授授课,7天集训+3天模拟赛+赛后点评解析,并配有助教全程课后指导, 累计指导学生近1000余队(2800余人次),国赛荣获800余项省级以上数模奖项,参培学员获奖率超过80%,每期仅限招200人!

群内获取往年夏令营资料、授课内容、夏令营详情等最新资讯

好啦~数模国赛即将来临啦

数乐君继续给大家发福利啦

里面都是一些数学建模竞赛中

经常能用到的必备干货商品

可以根据自己的需求去购买哦

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
一场比赛中间要注射4-5次胰岛素!兹维列夫有多不易?

一场比赛中间要注射4-5次胰岛素!兹维列夫有多不易?

网球之家
2024-06-13 13:08:20
中产家庭消费降级的也是厉害

中产家庭消费降级的也是厉害

悠闲葡萄
2024-06-13 11:10:15
菲破船不用拖了,中方在清场!中方只用一招就让马科斯沦为笑柄!

菲破船不用拖了,中方在清场!中方只用一招就让马科斯沦为笑柄!

小lu侃侃而谈
2024-06-12 20:57:38
688008,利润大增1000%触底反转,A股下一个紫金矿业!

688008,利润大增1000%触底反转,A股下一个紫金矿业!

飞鲸投研
2024-06-13 18:48:34
坚决执行党中央决策部署

坚决执行党中央决策部署

金台资讯
2024-06-12 18:25:28
女儿探望改嫁母亲,看到49岁的母亲挺着孕肚,见到继父一瞬间傻了

女儿探望改嫁母亲,看到49岁的母亲挺着孕肚,见到继父一瞬间傻了

星辰故事屋
2024-06-07 12:09:20
太惨!昆明一新能源汽车夜间发生大火,多辆车被烧毁,损失惨重!

太惨!昆明一新能源汽车夜间发生大火,多辆车被烧毁,损失惨重!

户外小阿隋
2024-06-13 19:28:08
曝45岁伏明霞离婚,净身出户原因揭晓,71岁百亿丈夫只说6个字

曝45岁伏明霞离婚,净身出户原因揭晓,71岁百亿丈夫只说6个字

深度知局
2024-05-20 19:25:53
率队出战亚少预选赛!08国少日本籍主帅上村健一简介

率队出战亚少预选赛!08国少日本籍主帅上村健一简介

直播吧
2024-06-13 15:39:02
震惊我了!小沈阳演唱会变身型男,肌肉明显颜值大涨,超显年轻!

震惊我了!小沈阳演唱会变身型男,肌肉明显颜值大涨,超显年轻!

小娱乐悠悠
2024-06-12 16:10:05
炒房客全军覆灭,第四城房价从64000元降至52000元,降幅超过20%

炒房客全军覆灭,第四城房价从64000元降至52000元,降幅超过20%

有事问彭叔
2024-06-12 16:58:48
又赚到了!孟加拉四处炫耀中国给建的大桥:开通当天过路费破千万

又赚到了!孟加拉四处炫耀中国给建的大桥:开通当天过路费破千万

文雅笔墨
2024-06-12 21:49:22
极右翼将竭尽全力削弱这些群体的权利!

极右翼将竭尽全力削弱这些群体的权利!

新欧洲
2024-06-12 19:31:38
三分40投39中!男篮21岁天才太准了:这下冲击NBA有戏了?

三分40投39中!男篮21岁天才太准了:这下冲击NBA有戏了?

篮球快餐车
2024-06-13 06:55:39
龙舟赛上,女鼓手穿着十分开放引争议,网友:屈原看了会再跳一次

龙舟赛上,女鼓手穿着十分开放引争议,网友:屈原看了会再跳一次

元爸体育
2024-06-13 09:53:13
文旅局局长被指“官谱太大” 调研时有人打伞? 本人回应

文旅局局长被指“官谱太大” 调研时有人打伞? 本人回应

蓬勃新闻
2024-06-13 09:36:31
新型卖淫方式,让人预想不到,但却真实存在!

新型卖淫方式,让人预想不到,但却真实存在!

雪影的情感
2023-11-18 11:51:16
“夕发朝至”高铁动卧首次开进广州中心城区

“夕发朝至”高铁动卧首次开进广州中心城区

北青网-北京青年报
2024-06-13 18:09:14
黄一山带患罕见病儿子回港,28岁儿子终身坐轮椅,包裹从头到脚

黄一山带患罕见病儿子回港,28岁儿子终身坐轮椅,包裹从头到脚

娱记掌门
2024-06-13 01:09:48
70岁成龙被指断崖式衰老,近况曝光秒回春似壮年

70岁成龙被指断崖式衰老,近况曝光秒回春似壮年

葫芦哥爱吐槽
2024-06-13 02:39:28
2024-06-13 21:14:44
数模乐园官方
数模乐园官方
专注于数学建模,分享干货知识
1133文章数 793关注度
往期回顾 全部

科技要闻

小红书员工仅1/5工龄满2年 32岁就不让进了

头条要闻

俄核潜艇率队抵达"美国后院":没带核弹 带了3种导弹

头条要闻

俄核潜艇率队抵达"美国后院":没带核弹 带了3种导弹

体育要闻

乔丹最想单挑的男人走了

娱乐要闻

森林北报案,称和汪峰的感情遭受压力

财经要闻

私募大佬孙强:中国为什么缺少耐心资本

汽车要闻

升级8155芯片 新款卡罗拉锐放售12.98-18.48万

态度原创

时尚
本地
教育
旅游
军事航空

比Samba复古,比勃肯鞋时髦!2024最火的4双运动鞋,你知道几个?

本地新闻

粽情一夏|海河龙舟赛,竟然成了外国人的大party!

教育要闻

山东各地中考考点多措并举防暑降温,确保考生顺利完成考试

旅游要闻

山西文旅厅厅长与董宇辉拉家常:中午回家吃了饭

军事要闻

美军演习将罕见以4万吨级准航母作为靶舰

无障碍浏览 进入关怀版