前期已经学了如何建立变量之间的相关关系及如何分类,接下来要分析如果变量太多,或可以通过降维再进行分析,就要用到降维技术:主成分分析。

案例比较少,我们拿鸢尾花和拉面

的经典案例来做分析。

主成分分析:将多个变量融合成一个变量,使得变量的个数大大降低,并且能够将有相关关系的几个指标合并为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主成分分析-经典案例分析相关推荐

  1. python飞机_Python 飞机航班案例分析

    关注微信号:小城在线 关注CSDN:程志伟的博客 import numpy as np import pandas as pd import matplotlib.pyplot as plt impo ...

  2. acm水仙花数java,水仙花数之C语言经典案例分析

    水仙花数之C语言经典案例分析 一.[什么是水仙花数] 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI) ...

  3. 02【简历】重要性,撰写要点,经典案例分析,简历七大模块?

    02[简历]重要性,撰写要点,经典案例分析 简历七大模块:基本信息,教育背景,荣誉奖励,实习经历,项目经历,个人技能,其他(兴趣爱好,自我评价) [Star法则]: STAR法则,即为Situatio ...

  4. 猴子吃桃c语言程序到第n天,猴子吃桃问题之《C语言经典案例分析》

    猴子吃桃问题之<C语言经典案例分析> 一.[什么是猴子吃桃] 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个.第二天早上又将第一天剩下的桃子吃掉一半,有多吃了 ...

  5. SQL优化实战经典案例分析

    前言 大家好,我是黎杜,今天和大家聊聊SQL优化的场景. SQL调优这块呢,大厂面试必问的.最近金九银十嘛,所以整理了SQL的调优思路,并且附几个经典案例分析. 1.慢SQL优化思路. 慢查询日志记录 ...

  6. python用于数据分析的案例_Python数据分析经典案例

    从事机器学习,数据分析,数据挖掘的同学们以及python使用者 选择经典案例基于真实数据集,从数据预处理开始到建立机器学习模型以及效果评估,完整的讲解如何使用python及其常用库进行数据的分析和模型 ...

  7. python递归函数例子_Python递归函数经典案例-汉诺塔问题

    汉诺塔 汉诺塔问题是递归算法学习的一个经典案例,首先来看下汉诺塔问题的相关描述: 汉诺塔问题起源于一个古老的印度传说,大梵天创世时制作了三根金刚石石柱,在第一根柱子上从上往下从小到大摞着64片金盘,婆 ...

  8. python网页爬虫漫画案例_Python爬虫 JS案例分析:爬取鬼灭之刃漫

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 文章转载于公众号:快学Python 作者:皖渝 猪油骨,拿来卤~今天,来分享一下python图片爬 ...

  9. 名企中无领导小组经典案例分析

    [size=large][b]一.无领导小组面试概况 [/b] 在这种形式中,应试者划分成每组人数四到八人不等,不指定负责人,大家地位平等,要求就某些争议性比较大的问题,例如干部提拔.工作任务分配.额 ...

  10. python异常处理_Python基础语法案例(Fibonacci):选择结构、循环结构、异常处理结构、代码优化...

    推荐图书: <Python程序设计基础(第2版)>,ISBN:9787302490562,董付国,清华大学出版社,第16次印刷,清华大学出版社2019年度畅销图书 图书购买链接(京东):配 ...

最新文章

  1. R语言生存分析模型简介及survival包实现实战:基于survival包lung数据集
  2. 声音定位的距离误差到底有多高?
  3. DL之InceptionV4/ResNet:InceptionV4/Inception-ResNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  4. 爬虫技术python nutch_python爬虫,学习路径拆解及资源推荐(第三篇:工程化爬虫)...
  5. 关于activiti中的三类网关
  6. [JSP暑假实训] 四.MyEclipse+Servlet+JSP实现火车票网站查询、修改、删除操作
  7. AR-关于应收票据的系统操作说明
  8. web前端期末大作业--响应式汽车租赁网页设计--(HTML+CSS+JavaScript)实现
  9. Linux(centos)系统各个目录的作用详解
  10. PHP 加密用户密码 How to store passwords safely with PHP and MySQL
  11. 安装centos8.4.2105 docker镜像
  12. iDataForum2010数据库技术论坛总结
  13. Windows下启动Apache报错:ServerRoot must be a valid directory
  14. 《Web性能实践日志》一1.5 浏览器的发展
  15. webapi net 直接更改协议头
  16. 建模算法(八)——插值
  17. 关于Excel导入SQLServer的说明
  18. opencv之图片处理看这一篇就够了(一)
  19. 国药集团获得美国默沙东公司新冠口服药“莫诺拉韦”经销权和独家进口权 | 美通社头条...
  20. 长微博图片制作(无水印)

热门文章

  1. 中国程序员容易发错音的单词「GitHub 热点速览 v.22.23」
  2. android设置ip地址连接网络打印机,如何使用IP地址的方式连接网络打印机
  3. 动态RAM和静态RAM的区别(浅学)
  4. SLA是什么意思 ?
  5. Oracle EBS SLA Custom Sources(自定义来源)
  6. css配色大全和色彩原理
  7. 计算机专业大专考研考什么科目,计算机专业考研都考什么科目?
  8. 计算机主板北桥芯片的主要作用,介绍一下南北桥芯片的位置及作用
  9. Ubuntu-图形界面和字符界面切换快捷键
  10. 4399小游戏怎样下载到本地玩