主成分分析(PCA)-Python代码

这篇具有很好参考价值的文章主要介绍了主成分分析(PCA)-Python代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

主成分分析是利用降维的思想,在损失很少信息的前提下把多个指标转化为几个综合指标的多元统计方法。
算法的具体步骤如下:
1)对向量X进行去中心化。
2)计算向量X的协方差矩阵,自由度可以选择0或者1。
3)计算协方差矩阵的特征值和特征向量。
4)选取最大的k个特征值及其特征向量。
5)用X与特征向量相乘。

代码如下:

一、导入库

# 数据处理
import pandas as pd
import numpy as np
 
# 绘图
import seaborn as sns
import matplotlib.pyplot as plt

二、读取数据集

df = pd.read_csv(r"C:\Users\1\Desktop\mydata.csv", encoding='gbk', index_col=0).reset_index(drop=True)
## 数据来源:国家统计局  2020年31个城市空气质量情况  http://www.stats.gov.cn/tjsj/ndsj/2021/indexch.htm
df

三、球状检验

# Bartlett's球状检验
from factor_analyzer.factor_analyzer import calculate_bartlett_sphericity
 
chi_square_value, p_value = calculate_bartlett_sphericity(df)
print(chi_square_value, p_value)

四、KMO检验

# 检查变量间的相关性和偏相关性,取值在0-1之间;KOM统计量越接近1,变量间的相关性越强,偏相关性越弱,因子分析的效果越好。
# 通常取值从0.6开始进行因子分析
from factor_analyzer.factor_analyzer import calculate_kmo
 
kmo_all, kmo_model = calculate_kmo(df)
print(kmo_all)

五、相关矩阵

### step-1  标准化
from sklearn import preprocessing
df = preprocessing.scale(df)
df
### step-2 相关系数矩阵
covX = np.around(np.corrcoef(df.T),decimals=3)
covX
### step-3 特征值和特征向量
featValue, featVec=  np.linalg.eig(covX.T)  #求解系数相关矩阵的特征值和特征向量
featValue, featVec
### step-4 对特征值进行排序并输出  降序
featValue = sorted(featValue)[::-1]
featValue

六、绘制散点图和折线图

# 同样的数据绘制散点图和折线图
plt.scatter(range(1, df.shape[1] + 1), featValue)
plt.plot(range(1, df.shape[1] + 1), featValue)
 
# 显示图的标题和xy轴的名字
# 最好使用英文,中文可能乱码
plt.title("Scree Plot")  
plt.xlabel("Factors")
plt.ylabel("Eigenvalue")
 
plt.grid()  # 显示网格
plt.show()  # 显示图形

七、特征值贡献度

gx = featValue/np.sum(featValue)
gx

八、特征值的累计贡献率

lg = np.cumsum(gx)
lg

九、排序选出主成分

#选出主成分
k=[i for i in range(len(lg)) if lg[i]<0.85]
k = list(k)
print(k)

十、选出主成分对应的特征向量矩阵

selectVec = np.matrix(featVec.T[k]).T
selectVe=selectVec*(-1)
selectVec

十一、主成分得分

finalData = np.dot(df,selectVec)
finalData

十二、热力图文章来源地址https://www.toymoban.com/news/detail-630325.html

# 绘图
 
plt.figure(figsize = (14,14))
ax = sns.heatmap(selectVec, annot=True, cmap="BuPu")
 
# 设置y轴字体大小
ax.yaxis.set_tick_params(labelsize=15)
plt.title("Factor Analysis", fontsize="xx-large")
 
# 设置y轴标签
plt.ylabel("Sepal Width", fontsize="xx-large")
# 显示图片
plt.show()
 
# 保存图片
# plt.savefig("factorAnalysis", dpi=500)

到了这里,关于主成分分析(PCA)-Python代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【机器学习】 奇异值分解 (SVD) 和主成分分析 (PCA)

            在机器学习 (ML) 中,一些最重要的线性代数概念是奇异值分解 (SVD) 和主成分分析 (PCA)。收集到所有原始数据后,我们如何发现结构?例如,通过过去 6 天的利率,我们能否了解其构成以发现趋势?         对于高维原始数据,这变得更加困难。这就像

    2024年02月15日
    浏览(52)
  • 主成分分析(PCA)及python原理实现

    该定义来自于秒懂百科:          PCA(principal components analysis)即主成分分析技术,又称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标。         在统计学中,主成分分析PCA是一种简化数据集的技术。它是一个线性变换。这个变换把数据变换

    2024年02月07日
    浏览(43)
  • 主成分分析法(PCA)及其python实现

    主成分分析法(Principal Component Analysis,PCA)是一种用于把高维数据降成低维,使分析变得更加简便的分析方法。比如我们的一个样本可以由 n n n 维随机变量 ( X 1 , X 2 , . . . , X n ) (X_1,X_2,...,X_n) ( X 1 ​ , X 2 ​ , ... , X n ​ ) 来刻画,运用主成分分析法,我们可以把这些分量用更

    2024年01月16日
    浏览(45)
  • 【数学建模】常用算法-主成分分析PCA的Python实现

    本文主要讲解主成分分析析法(PCA)的python实现,后续会跟进实例分析 主成分分析PCA是一种应用广泛的和降维方法,对其实现做以下归纳 导入包 定义计算协方差矩阵函数 X为输入的数据,m为样本数据的条数,也就是X的行数。 对X进行标准化,方法为:减去均值除以方差,这

    2023年04月08日
    浏览(102)
  • Python PCA(主成分分析法)降维的两种实现

            PCA降维,一般是用于数据分析和机器学习。它的作用是把一个高维的数据在保留最大信息量的前提下降低到一个低维的空间,从而使我们能够提取数据的主要特征分量,从而得到对数据影响最大的主成分,便于我们对数据进行分析等后续操作。         例如,

    2023年04月17日
    浏览(39)
  • 主成分分析(PCA)步骤及代码

      主成分分析(Principal Component Analysis,PCA), 简称PCA,是一种统计方法。过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。主成分分析是我们在数学建模的过程中最为常见的线性降维方式,在比赛中常常会用在数据指标过多

    2023年04月08日
    浏览(40)
  • 机器学习强基计划8-3:详细推导核化主成分分析KPCA算法(附Python实现)

    机器学习强基计划聚焦深度和广度,加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理;“广”在分析多个机器学习模型:决策树、支持向量机、贝叶斯与马尔科夫决策、强化学习等。强基计划实现从理论到实践的全面覆盖,由本人亲自从底层编

    2023年04月09日
    浏览(42)
  • PCA(主成分分析)的理解与应用(学习笔记)

    PCA         主成分分析(Principal Component Analysis, PCA)是一种线性降维算法,也是一种常用的数据预处理(Pre-Processing)方法。它的目标是是用方差(Variance)来衡量数据的差异性,并将差异性较大的高维数据投影到低维空间中进行表示。绝大多数情况下,我们希望获得两个

    2024年02月05日
    浏览(49)
  • Python实现:高斯滤波 均值滤波 中值滤波 Canny(边缘检测)PCA主成分分析 直方图规定化 Mean_Shift

    左侧为原图右侧为高斯滤波后的图 左图为带有噪声的输入原图,右图为经过均值滤波后的图片 左图为带有噪声的输入原图,右图为经过中值滤波后的图 上图为输入原图,下图为经过Canny边缘检测后的图 上图为原图 中图为规定目标图 下图为原图经过规定化后的图 左图为原输

    2024年02月07日
    浏览(44)
  • 【语音识别】基于主成分分析PCA结合最近邻KNN实现声音自动分类附matlab代码

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信       无

    2024年04月27日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包