首页 > 其他分享 >主成分分析PCA

主成分分析PCA

时间:2024-06-16 13:29:39浏览次数:18  
标签:分析 PCA plt 成分 components 降维后 model pca

一、基本代码

sklearn.decomposition.PCA(n_components=None, *, copy=True,whiten=False, svd_solver='auto',tol=0.0, iterated_power='auto',random state=None)

参数介绍:

参数1:
n_components:这个参数可以设置为一个大于等于1的整数,表示数据降到的维数。默认值为n_components=min(样本数,特征数)。也可设置为一个(0,1]之间的数,用于设定主成分累积贡献率的阈值,让PCA类自己去根据样本特征方差来决定降维到的维度数。

参数2:

whiten:Bool型数据:判断是否进行白化。所谓白化,就是对降维后的数据的每个特征进行归一化,方差都为1.默认值=False

参数3:

svd_solver:有4个可以选择的值:{'auto','full','arpack','randomized'},一般来说,使用默认值就够了。在sklearn较新版本,当指定n_components=‘mle',需要设置svd solver='full'方可.

重要属性:
components:返回具有最大方差的成分。

explained_variance_ratio:返回所保留的n个成分各自的方差百分比。
n_components:返回所保留的成分个数n。
mean:从训练集估算出的每个特征的经验平均值。

重要方法
> fit(X,y=None)
fit(X),表示用数据X来训练PCA模型。
函数返回值:调用fit方法的对象本身。比如pca.fit(X),表
示用X对pca这个对象进行训练。

> transform(X)
将数据X转换成降维后的数据。当模型训练好后,对于新输
入的数据,都可以用transform方法来降维。

> fit_transform(X)
用X来训练PCA模型,同时返回降维后的数据。
newX=pca.fit_transform(X),newX就是降维后的数据。

> inverse_transform()
将降维后的数据转换成原始维度的数据,
X=pca.inverse_transform(newX)

import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA

# 设置随机种子以确保结果可复现
rng = np.random.RandomState(1)

# 使用随机数生成器创建二维数据集
# rng.rand(2, 2) 生成一个 2x2 的随机矩阵
# rng.randn(2, 200) 生成一个 2x200 的标准正态分布随机数矩阵
# np.dot 将两个矩阵相乘,结果是 200 个二维向量
X = np.dot(rng.rand(2, 2), rng.randn(2, 200)).T

# 绘制原始数据的散点图
plt.scatter(X[:, 0], X[:, 1])
plt.axis('equal')  # 使 x 轴和 y 轴的比例相等
plt.show()

# 创建PCA模型对象,并指定降维后的维度为2
pca_model = PCA(n_components=2)

# 用数据X拟合PCA模型
pca_model.fit(X)

# 打印主成分(即特征向量)
print('Components:', pca_model.components_)
print('________')

# 打印解释方差比率(即每个主成分解释的方差比例)
print('Explained variance ratio:', pca_model.explained_variance_ratio_)

# 定义一个绘制向量的函数
def draw_vector(v0, v1, ax=None):
    ax = ax or plt.gca()  # 获取当前的坐标轴,如果没有则创建一个
    arrowprops = dict(arrowstyle='->', linewidth=2, shrinkA=0, shrinkB=0)  # 定义箭头属性
    ax.annotate('', v0, v1, arrowprops=arrowprops)  # 在图中绘制箭头

# 再次绘制原始数据的散点图,但设置透明度为0.2
plt.scatter(X[:, 0], X[:, 1], alpha=0.2)

# 绘制主成分向量
# 通过解释方差比率和主成分向量的乘积来确定向量的长度
for length, vector in zip(pca_model.explained_variance_ratio_, pca_model.components_):
    v = vector * 3 * np.sqrt(length)  # 缩放向量以更好地显示
    draw_vector(pca_model.mean_, pca_model.mean_ + v)  # 从数据的均值位置绘制向量

plt.axis('equal')  # 使 x 轴和 y 轴的比例相等
plt.show()  # 显示图形

二维降维为一维

import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA

# 生成随机数据
rng = np.random.RandomState(1)
X = np.dot(rng.rand(2, 2), rng.randn(2, 200)).T

# 创建PCA模型并进行拟合
pca_model = PCA(n_components=1)  # 创建PCA模型,指定降维到一维
pca_model.fit(X)  # 使用随机数据拟合PCA模型
X_pca = pca_model.transform(X)  # 对数据进行PCA降维,得到一维数据

# 输出PCA组件和方差占比
print('成分:', pca_model.components_)  # 输出PCA模型的主成分(特征向量)
print("---------------")
print('各成分方差占比:', pca_model.explained_variance_ratio_)  # 输出各主成分对应的方差占比
print('原始数据的规模:', X.shape)  # 输出原始数据的规模
print('降维后数据的规模:', X_pca.shape)  # 输出降维后的数据的规模

# 将降维数据转换回原始维度数据
X_new = pca_model.inverse_transform(X_pca)  # 将降维后的数据转换回原始维度的数据

# 可视化原始数据和降维恢复的数据
plt.scatter(X[:, 0], X[:, 1], alpha=0.2, label='Original Data')  # 绘制原始数据的散点图
plt.scatter(X_new[:, 0], X_new[:, 1], alpha=0.6, label='PCA Reconstructed Data')  # 绘制降维恢复的数据的散点图
plt.axis('equal')  # 设置坐标轴刻度相等
plt.legend()  # 显示图例
plt.show()  # 展示可视化结果

高维降维

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA

# 加载手写数字数据集
digits = load_digits()

# 输出原始数据集的规模
print('digits数据集的规模是:', digits.data.shape)

# 创建PCA模型并进行降维
pca_model = PCA(n_components=2)  # 创建PCA模型,降维到二维
pca_data = pca_model.fit_transform(digits.data)  # 对原始数据进行降维
print('降维后的数据集规模是:', pca_data.shape)  # 输出降维后的数据集规模
print('降维后数据的累积解释方差占比为:', np.cumsum(pca_model.explained_variance_ratio_))  # 输出降维后的数据集的累积解释方差占比

# 使用PCA自动选择降维的维度
pca = PCA().fit(digits.data)  # 使用PCA自动选择维度
plt.plot(np.cumsum(pca.explained_variance_ratio_))  # 绘制累积解释方差占比曲线
pca = PCA(n_components=0.9).fit(digits.data)  # 设置阈值为0.9,选择能解释90%方差的维度
plt.plot(np.cumsum(pca.explained_variance_ratio_))  # 绘制累积解释方差占比曲线
plt.show()  # 展示可视化结果
print('数据维度降低到:', pca.n_components_)  # 输出数据降维后的维度

标签:分析,PCA,plt,成分,components,降维后,model,pca
From: https://blog.csdn.net/weixin_66403225/article/details/139706383

相关文章

  • 第七章 线性判别分析LDA(7.1)
    一、基本代码:sklearn.discriminant_analysis.LinearDiscriminantAnalysis(solver='svd',shrinkage=None,priors=None,n_components=None,store_covariance=False,tol=0.0001,covariance_estimator=None)[source]参数介绍:参数:priors:一个数组,数组中的元素依次指定了每个类......
  • 基于K最近邻算法在二分类和回归分析中的应用
    目录前言:案例一、K近邻算法在二分类中的应用1.生成训练集2.用KNN算法拟合这些数据  4.验证KNN算法的分类结果案例二、K近邻算法在多分类中的应用1.生成多分类任务数据集2.用KNN算法拟合这些数据  5.验证KNN算法的分类结果 案例三K近邻算法在回归分析中的应用 1......
  • 课前准备-单细胞转录组联合VDJ数据分析
    作者,EvilGenius而我们需要实现的分析,即VDJ聚类与motif分析分析会在课上讲到,报名链接在2024年单细胞空间系列课程完整脚本如下(封装版)importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltimportrandomimporttensorflowastffr......
  • 课前准备-单细胞velocity分析(贝叶斯模型)
    作者,EvilGenius速率ProbabilisticmodelingofRNAvelocityDirectmodelingofrawsplicedandunsplicedreadcountMultipleuncertaintydiagnosticsanalysisandvisualizationsSynchronizedcelltimeestimationacrossgenesMultivariatedenoisedgeneexpress......
  • 【DevOps】Logstash详解:高效日志管理与分析工具
    在现代软件开发和运维过程中,日志管理与分析是至关重要的环节。日志可以帮助我们追踪系统行为、诊断问题、优化性能以及确保安全合规。Logstash,作为ELKStack(Elasticsearch、Logstash、Kibana)的核心组件之一,是一个功能强大、灵活易用的日志收集、处理和转发工具。本文将详细介绍......
  • LGA-4100分析仪在转炉煤气回收中的应用
    LGA-4100分析仪在转炉煤气回收中的应用——LGA-4100分析仪的实际应用1、引言转炉煤气作为转炉炼钢生产过程中的副产品,想要回收,必须达到:CO含量大于20PPm.O2含量小于1.6%。才能被回收入柜。目前酒钢老炼钢已对三套CO和O2在线分析仪(EL3020)完成改造,使用LGA-4100激光分析仪代......
  • 分析Linux操作指令及使用场景与频率分析 持续更新
    本篇主要针对在日常工作与学习中使用较多的linux指令的使用方法以及使用频次进行分析与讲解,旨在能够更好的掌握这些必备的技能。linux指令非常的多,如果要记住所有的指令使用方法是非常困难的且要花费很长的时间,很多人习惯离开使用去通篇死记,这样过一段时间就容易忘记,在这个方......
  • 金融量化分析开源工具:TuShare
    TuShare:一站式金融数据解决方案,让量化分析触手可及-精选真开源,释放新价值。概览TuShare,是Github社区上一个专为金融量化分析师和数据爱好者设计的开源工具,提供了从数据采集、清洗加工到数据存储的全流程服务。它以其数据覆盖面广、接口调用简便、响应速度快而广受好评。......
  • gbase8s的select查询数据物理位置寻址分析和学习
    1.执行的sql语句和目的执行的sql语句selectrowid,*fromtest1whereid=1;目的:查找到test1表中id=1这个值在硬盘中的真实位置并取出2.寻址的过程-确定表的数据空间和逻辑页的信息根据表名查看这张表的数据空间位置和逻辑页号[gbasedbt@iZ2ze5s78e4tanwe5q2znxZ~]$......
  • 推荐 | 作物育种理论与案例分析(第二版)
    推荐一本理论与实践相结合的作物育种教材——《作物育种理论与案例分析(第二版)》,由科学出版社2022-03出版,作为“十三五”普通高等教育研究生规划教材、创新型现代农林院校研究生系列教材、全国农业专业学位研究生教育指导委员会推荐教材。该书由中国农业大学校长孙其信院士主编,总......