python主成分分析_Python主成分分析-经典案例分析
前期已经学了如何建立变量之间的相关关系及如何分类,接下来要分析如果变量太多,或可以通过降维再进行分析,就要用到降维技术:主成分分析。
案例比较少,我们拿鸢尾花和拉面
的经典案例来做分析。
主成分分析:将多个变量融合成一个变量,使得变量的个数大大降低,并且能够将有相关关系的几个指标合并为1个,消除变量之间的多重共线性。
举例如下,x1,x2,x3这三个自变量中,只有x1的变化能解释y1的变化:
主成分分析主要分析有方差的,即有变动的,没有方差的无法解释因变量。
案例一:分析的样本为鸢尾花,已知鸢尾花数据是4维的,共三类样本,使用PCA实现对鸢尾花数据进行降维,实现在二维平面上的可视化。
import matplotlib.pyplot as plt
import sklearn.decomposition as dp
from sklearn.datasets.base import load_iris
x,y=load_iris(return_X_y=True) #加载数据,x表示数据集中的属性数据,y表示数据标签
pca=dp.PCA(n_components=2) #加载pca算法,设置降维后主成分数目为2
reduced_x=pca.fit_transform(x) #对原始数据进行降维,保存在reduced_x中
red_x,red_y=[],[]
blue_x,blue_y=[],[]
green_x,green_y=[],[]
for i in range(len(reduced_x)): #按鸢尾花的类别将降维后的数据点保存在不同的表表中
if y[i]==0:
red_x.append(reduced_x[i][0])
red_y.append(reduced_x[i][1])
elif y[i]==1:
blue_x.append(reduced_x[i][0])
blue_y.append(reduced_x[i][1])
else:
green_x.append(reduced_x[i][0])
green_y.append(reduced_x[i][1])
plt.scatter(red_x,red_y,c='r',marker='x')
plt.scatter(blue_x,blue_y,c='b',marker='D')
plt.scatter(green_x,green_y,c='g',marker='.')
plt.show()
案例二:拉面案例来自CSDN这个博主的文章
(#版权声明:本文为CSDN博主「波纹疾走」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 #原文链接:https://blog.csdn.net/weixin_40173577/article/details/85814614)
1、先导入所需要的数据和安装包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#中文文字显示问题
from pylab import mpl
# 指定默认字体
mpl.rcParams['font.sans-serif'] = ['FangSong']
# 解决保存图像是负号'-'显示为方块的问题
mpl.rcParams['axes.unicode_minus'] = False
from sklearn.decomposition import PCA
df_org = pd.read_excel("拉面.xlsx", sheet_name="拉面")
2、数据中心化
df_std = (df_org - df_org.mean())/df_org.std()
#数据中心化
3、求相关系数
df_corr = df_std.corr()
df_corr
#求相关系数
4、求协方差的特征值和特征向量
eig_value,eig_vector=np.linalg.eig(df_corr)
#特征值
#特征值排序
eig=pd.DataFrame({"eig_value":eig_value})
eig=eig.sort_values(by=["eig_value"], ascending=False)
#获取累积贡献度
eig["eig_cum"] = (eig["eig_value"]/eig["eig_value"].sum()).cumsum()
#合并入特征向量
eig=eig.merge(pd.DataFrame(eig_vector).T, left_index=True, right_index=True)
eig
5、提取主成分,假设要求累积贡献度要达到70%,则取2个主成分
#提取主成分
#假设要求累积贡献度要达到70%,则取2个主成分
#成分得分系数矩阵(因子载荷矩阵法)
loading = eig.iloc[:2,2:].T
loading["vars"]=df_std.columns
loading
6、将样本投影到选取的特征向量上
plt.plot(loading[0],loading[1], "o")
xmin ,xmax = loading[0].min(), loading[0].max()
ymin, ymax = loading[1].min(), loading[1].max()
dx = (xmax - xmin) * 0.2
dy = (ymax - ymin) * 0.2
plt.xlim(xmin - dx, xmax + dx)
plt.ylim(ymin - dy, ymax + dy)
plt.xlabel('第1主成分')
plt.ylabel('第2主成分')
for x, y,z in zip(loading[0], loading[1], loading["vars"]):
plt.text(x, y+0.1, z, ha='center', va='bottom', fontsize=13)
plt.grid(True)
plt.show()
#影响力与正负数无关,只看绝对值。
#可以看到 变量中【汤】对第1主成分影响较大;【配料】对第2主成分影响略大于【面】。
plt.plot(score[0],score[1], "o")
xmin ,xmax = score[0].min(), score[0].max()
ymin, ymax = score[1].min(), score[1].max()
dx = (xmax - xmin) * 0.2
dy = (ymax - ymin) * 0.2
plt.xlim(xmin - dx, xmax + dx)
plt.ylim(ymin - dy, ymax + dy)
plt.xlabel('第1主成分')
plt.ylabel('第2主成分')
for x, y,z in zip(score[0], score[1], score.index):
plt.text(x, y+0.1, z, ha='center', va='bottom', fontsize=13)
plt.grid(True)
plt.show()
结论:由于第1主成分的所有系数都是负值,所以其得分负向越大,该数据对应的第1主成分得分越高。 #可以看到4号数据第1主成分得分最高,说明它的【汤】最受欢迎;同理,1号数据第2主成分得分最高,其【配料】评价最高。
python主成分分析_Python主成分分析-经典案例分析相关推荐
- python飞机_Python 飞机航班案例分析
关注微信号:小城在线 关注CSDN:程志伟的博客 import numpy as np import pandas as pd import matplotlib.pyplot as plt impo ...
- acm水仙花数java,水仙花数之C语言经典案例分析
水仙花数之C语言经典案例分析 一.[什么是水仙花数] 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI) ...
- 02【简历】重要性,撰写要点,经典案例分析,简历七大模块?
02[简历]重要性,撰写要点,经典案例分析 简历七大模块:基本信息,教育背景,荣誉奖励,实习经历,项目经历,个人技能,其他(兴趣爱好,自我评价) [Star法则]: STAR法则,即为Situatio ...
- 猴子吃桃c语言程序到第n天,猴子吃桃问题之《C语言经典案例分析》
猴子吃桃问题之<C语言经典案例分析> 一.[什么是猴子吃桃] 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个.第二天早上又将第一天剩下的桃子吃掉一半,有多吃了 ...
- SQL优化实战经典案例分析
前言 大家好,我是黎杜,今天和大家聊聊SQL优化的场景. SQL调优这块呢,大厂面试必问的.最近金九银十嘛,所以整理了SQL的调优思路,并且附几个经典案例分析. 1.慢SQL优化思路. 慢查询日志记录 ...
- python用于数据分析的案例_Python数据分析经典案例
从事机器学习,数据分析,数据挖掘的同学们以及python使用者 选择经典案例基于真实数据集,从数据预处理开始到建立机器学习模型以及效果评估,完整的讲解如何使用python及其常用库进行数据的分析和模型 ...
- python递归函数例子_Python递归函数经典案例-汉诺塔问题
汉诺塔 汉诺塔问题是递归算法学习的一个经典案例,首先来看下汉诺塔问题的相关描述: 汉诺塔问题起源于一个古老的印度传说,大梵天创世时制作了三根金刚石石柱,在第一根柱子上从上往下从小到大摞着64片金盘,婆 ...
- python网页爬虫漫画案例_Python爬虫 JS案例分析:爬取鬼灭之刃漫
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 文章转载于公众号:快学Python 作者:皖渝 猪油骨,拿来卤~今天,来分享一下python图片爬 ...
- 名企中无领导小组经典案例分析
[size=large][b]一.无领导小组面试概况 [/b] 在这种形式中,应试者划分成每组人数四到八人不等,不指定负责人,大家地位平等,要求就某些争议性比较大的问题,例如干部提拔.工作任务分配.额 ...
- python异常处理_Python基础语法案例(Fibonacci):选择结构、循环结构、异常处理结构、代码优化...
推荐图书: <Python程序设计基础(第2版)>,ISBN:9787302490562,董付国,清华大学出版社,第16次印刷,清华大学出版社2019年度畅销图书 图书购买链接(京东):配 ...
最新文章
- R语言生存分析模型简介及survival包实现实战:基于survival包lung数据集
- 声音定位的距离误差到底有多高?
- DL之InceptionV4/ResNet:InceptionV4/Inception-ResNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- 爬虫技术python nutch_python爬虫,学习路径拆解及资源推荐(第三篇:工程化爬虫)...
- 关于activiti中的三类网关
- [JSP暑假实训] 四.MyEclipse+Servlet+JSP实现火车票网站查询、修改、删除操作
- AR-关于应收票据的系统操作说明
- web前端期末大作业--响应式汽车租赁网页设计--(HTML+CSS+JavaScript)实现
- Linux(centos)系统各个目录的作用详解
- PHP 加密用户密码 How to store passwords safely with PHP and MySQL
- 安装centos8.4.2105 docker镜像
- iDataForum2010数据库技术论坛总结
- Windows下启动Apache报错:ServerRoot must be a valid directory
- 《Web性能实践日志》一1.5 浏览器的发展
- webapi net 直接更改协议头
- 建模算法(八)——插值
- 关于Excel导入SQLServer的说明
- opencv之图片处理看这一篇就够了(一)
- 国药集团获得美国默沙东公司新冠口服药“莫诺拉韦”经销权和独家进口权 | 美通社头条...
- 长微博图片制作(无水印)
热门文章
- 中国程序员容易发错音的单词「GitHub 热点速览 v.22.23」
- android设置ip地址连接网络打印机,如何使用IP地址的方式连接网络打印机
- 动态RAM和静态RAM的区别(浅学)
- SLA是什么意思 ?
- Oracle EBS SLA Custom Sources(自定义来源)
- css配色大全和色彩原理
- 计算机专业大专考研考什么科目,计算机专业考研都考什么科目?
- 计算机主板北桥芯片的主要作用,介绍一下南北桥芯片的位置及作用
- Ubuntu-图形界面和字符界面切换快捷键
- 4399小游戏怎样下载到本地玩