Python学习笔记,主成分分析法

本文介绍了Python中主成分分析(PCA)的概念和步骤,并通过sklearn库分析鸢尾花卉数据集,展示如何进行数据降维,保持信息量的同时简化数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主成分分析

整理整理自己学习python过程中的知识点,主成分分析法。
首先为什么需要主成分分析呢?比方说:记得高一时,一到期末就会有八门课的考试,而这八门课的成绩对你的成绩排名影响比重是不一样的。语文不怎么拉得开分,而数学的话对排名的影响还是比较大的。从这里面可以看出,八个特征值对你最终排名的贡献率是不一样的。这里我们就需要用到主成分分析法。将数据进行降维来分析,避免一些无用功。

接下来介绍一下主成分分析的步骤:
1.先求均值,再减去均值
2.计算协方差矩阵
3.计算协方差矩阵的特征值和特征向量
4.特征值从小到大排序,保留K个最大特征值
5.将mn的数据集乘以k个n维的特征向量的特征向量(nk),得到降维数据

值得注意的是为什么特征值 要从大到小排?
之前说了每一门课的重要程度是不一样的,而特征值越大,样本就越离散,信息量就越多,越容易区分,他就越重要。

接下来是使用sklearn库中的PCA分析iris数据集(鸢尾花卉数据集)
以下是代码:

import matplotlib.pyplot as pyl
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris

#导入鸢尾花数据,系统自带的数据
data = load_iris()
#提取出两组数据
y = data.target
x = data.data
#加载PCA算法
pca = PCA()
#训练数据
pca.fit(x)
#计算模型中各个特征量
tzl = pca.components_
print("各个特征量为:")
print(tzl)
#计算各个成分中各方差的百分比,贡献率
bfz = pca.explained_variance_ratio_
print("各贡献率为:")
print(bfz)


#确定要降的维数
pca1 = PCA(2)
#训练数据
pca1.fit(x)
#降维
pca_x = pca1.transform(x)

#提取类别
yellow_x,yell
主成分分析(PCA)是一种经典的统计学方法,可以通过线性变换将数据进行降维,用少数几个变量代替原始的很多变量。它的实现可以使用Python编程语言。\[1\]\[2\] 下面是一个使用Python实现PCA的示例代码: ```python import numpy as np from numpy.linalg import eig from sklearn.datasets import load_iris def pca(X, k): X = X - X.mean(axis=0) # 向量X去中心化 X_cov = np.cov(X.T, ddof=0) # 计算向量X的协方差矩阵,自由度可以选择0或1 eigenvalues, eigenvectors = eig(X_cov) # 计算协方差矩阵的特征值和特征向量 k_large_index = eigenvalues.argsort()\[-k:\]\[::-1\] # 选取最大的K个特征值及其特征向量 k_eigenvectors = eigenvectors\[k_large_index\] # 用X与特征向量相乘 return np.dot(X, k_eigenvectors.T) iris = load_iris() X = iris.data k = 2 X_pca = pca(X, k) print(X_pca) ``` 这段代码使用了NumPy库和scikit-learn库中的load_iris函数来加载鸢尾花数据集。然后,定义了一个pca函数来实现主成分分析。最后,将数据集X降维为k维,并打印出降维后的结果。\[2\] 需要注意的是,PCA的结果是一组新的变量,它们是原始变量的线性组合,因此失去了原有的含义。此外,PCA的解释性较差,主成分往往难以与实际情况中的特征对应,具有一定的模糊性。因此,在每个主成分贡献率相差不多的情况下,不建议使用PCA。\[3\] 参考链接: \[1\] 如何理解主成分分析法(PCA)清风数学建模学习笔记——主成分分析(PCA)原理详解及案例分析PCA的数学原理【数据处理方法】主成分分析(PCA)原理分析协方差矩阵和矩阵相关系数的理解。 \[2\] 代码实现参考链接 \[3\] PCA的缺陷所在 #### 引用[.reference_title] - *1* [Python机器学习13——主成分分析](https://blog.csdn.net/weixin_46277779/article/details/125533173)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [用python实现主成分分析(PCA)](https://blog.csdn.net/ruoff/article/details/116568680)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [主成分分析法(PCA)的理解(附python代码案例)](https://blog.csdn.net/qq_45722196/article/details/127584340)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值