主成分分析的Python实现
本文作者:万 浩,中南财经政法大学统计与数学学院
本文编辑:张孟晗
技术总编:陈 鼎
Stata&Python云端课程来啦!
好消息!好消息!千呼万唤下,爬虫俱乐部Stata&Python数据分析线上沙龙活动将于11月17日下午3:00到5:00举办。本系列线上沙龙活动是为了促进各位学友关于Stata&Python数据分析学习的交流与探讨,分享在现阶段数据分析过程中遇到的困难、感悟,实现思维的碰撞,提升数据分析能力。有难题一起解决,有好东西一起分享,让学习不再孤独,让交流更加密切。此外我们推出了针对数据分析小白的课程优惠活动。活动详情及参与方式参见本期第二篇推文~
一主成分分析
二Python实现
import numpy as np
import pandas as pd
data = pd.read_excel('states.xls') # 读取数据文件
var_ind = data.columns[1:]
capital_index = list(data['states'])
data = data.iloc[:, 1:]
corr_mat = data.corr() # 计算相关矩阵
print(corr_mat)
data = (data-data.mean())/data.std() # 数据标准化
cov_mat = data.cov() # 计算协方差矩阵
eigvals,eigvects = np.linalg.eig(cov_mat) # 计算特征值与特征向量
def cal_contribution(eigvals, k):
for i in range(1, k):
contri = eigvals[:i].sum()/eigvals.sum() # 计算累计贡献率
print('第%d主成分贡献率为:%s'%(i, contri))
if contri >0.85:
return i
i = cal_contribution(eigvals, 7)
eigs = eigvals[:i]
A = eigvects[:i].T # 计算特征向量矩阵
A1 = pd.DataFrame(A)
A1.index = var_ind
A1.columns = [1, 2, 3]
score_mat = data.dot(A) # 计算主成分得分
print(A1)
print('特征值为%s' %eigs)
score_mat.index = capital_index
sort_1 = score_mat.sort_values(0) # 按第一主成分得分排序
sort_1.columns = [1, 2, 3]
sort_2 = score_mat.sort_values(1) # 按第二主成分得分排序
sort_2.columns = [1, 2, 3]
sort_3 = score_mat.sort_values(2) # 按第三主成分得分排序
sort_3.columns = [1, 2, 3]
print(sort_1)
print(sort_2)
print(sort_3)
腾讯课堂课程二维码
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
正则表达式--贪婪模式
Seminar丨谁更重要:高管股权薪酬与财务报告欺诈 DOS能量,超乎你想象!爬虫实战丨走进哈利波特的魔法世界
数据集合并的新路子-frlink命令
Seminar丨附近的公司:利用卫星图像研究本地信息优势线性同余法生成伪随机数
[技能篇]多线程爬虫
“好哭”是衡量一部好电影的标准吗?
Stata&Python云端课程来啦!带你了解Stata中的矩阵
Seminar|总统的朋友:政治关联与企业价值爬虫实战 | 爬取中国天气网
爬虫实战 | 爬取东方财富网经济数据——以居民消费价格指数(CPI)为例
Seminar|媒体关联董事对融资和外部治理的影响神奇的组内交叉合并 PDF分章节转TXT并实现可视化——以胡景北知青日记1971至1978年为例万物皆可开——shellout妙用
无处不在的系列配置项|从零开始的Pyecharts(三)
使用Python制作自动聊天机器人
fillin一下,平衡回来~
order命令——快速改变变量顺序的利器 Ajax应用场景——以获取雪球网港股代码及公司名称为例播放列表中的歌单排行
在Stata中轻松运用program编写命令
Meta Analysis in Stata17芒果TV视频弹幕爬取之《我在他乡挺好的》
Stata中的判断神器——confirm命令
cngdf——名义GDP与实际GDP之间的摆渡船最近《扫黑风暴》有点火爆!我从豆瓣评论中发现了这些……
随机森林-Random Forest
复原之神--preserve&restore
合并,“纵”享新丝滑:frameappend & xframeappend关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。