【数学建模】常用算法-主成分分析PCA的Python实现

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

1前言

本文主要讲解主成分分析析法(PCA)的python实现,后续会跟进实例分析

2 原理-代码实现

2.1 实现步骤

主成分分析PCA是一种应用广泛的和降维方法,对其实现做以下归纳【数学建模】常用算法-主成分分析PCA的Python实现

2.2 代码实现

导入包

import numpy as np
  • 定义计算协方差矩阵函数
    X为输入的数据,m为样本数据的条数,也就是X的行数。
    对X进行标准化,方法为:减去均值除以方差,这部分的原理不懂的可以百度一下。
    标准化之后的数据就是均值为0,方差为1的标准正态分布。
# 计算协方差矩阵
def calc_cov(X):
    m = X.shape[0] # 样本的数量,行数
    # 数据标准化
    X = (X - np.mean(X, axis=0)) / np.var(X, axis=0) # 标准化之后均值为0,方差为1
    return 1 / m * np.matmul(X.T, X) # matmul为两个矩阵的乘积
  • 定义PCA的流程
    首先计算输入数据X的协方差,然后计算其特征值记为:eigenvalues,计算其特征向量记为:eigenvectors
    计算特征值和特征向量用的是 np.linalg.eig()函数,使用起来十分方便
    然后接下来就是计算出矩阵P,用Y=XP计算出降维后的数据Y
def pca(X, n_components):
    # 计算协方差矩阵
    cov_matrix = calc_cov(X)
    # 计算协方差矩阵的特征值和对应特征向量
    eigenvalues, eigenvectors = np.linalg.eig(cov_matrix) # eigenvalues特征值,eigenvectors特征向量
    # 对特征值排序
    idx = eigenvalues.argsort()[::-1]
    # 取最大的前n_component组
    eigenvectors = eigenvectors[:, idx]
    eigenvectors = eigenvectors[:, :n_components]
    # Y=XP转换
    return np.matmul(X, eigenvectors)

2.3鸢尾花数据集例子

导入数据

from sklearn import datasets
import matplotlib.pyplot as plt
# 导入鸢尾花数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target

查看数据的形状,其结果为(150, 4)

X.shape
# (150, 4)

计算协方差矩阵

cov_matrix = calc_cov(X) # 计算特征值
cov_matrix

【数学建模】常用算法-主成分分析PCA的Python实现
可以看到协方差矩阵为4*4的矩阵,然后我们计算该矩阵的特征值和特征向量

eigenvalues, eigenvectors = np.linalg.eig(cov_matrix) # eigenvalues特征值,eigenvectors特征向量

【数学建模】常用算法-主成分分析PCA的Python实现
然后计算我们需要的P,这里我们保留3个主成分

idx = eigenvalues.argsort()[::-1]
# 取最大的前n_component组
eigenvectors = eigenvectors[:, idx]
eigenvectors = eigenvectors[:, :3]

得到了一个4行3列的矩阵
【数学建模】常用算法-主成分分析PCA的Python实现
然后利用P求得降维后的数据

# Y=PX转换
np.matmul(X, eigenvectors)

降维后的数据为(150, 4)*(4, 3)=(150, 3)
也就是150条,3列的数据,数据由原来的4维降低到了3维
【数学建模】常用算法-主成分分析PCA的Python实现

3 基于Sklearn的实现

# 导入sklearn降维模块
from sklearn import decomposition
# 创建pca模型实例,主成分个数为3个
pca = decomposition.PCA(n_components=3) # 写我们需要几个主成分
# 模型拟合
pca.fit(X)
# 拟合模型并将模型应用于数据X
X_trans = pca.transform(X)

# 颜色列表
colors = ['navy', 'turquoise', 'darkorange']
# 绘制不同类别
for c, i, target_name in zip(colors, [0,1,2], iris.target_names):
    plt.scatter(X_trans[y == i, 0], X_trans[y == i, 1], 
            color=c, lw=2, label=target_name)
# 添加图例
plt.legend()
plt.show()

【数学建模】常用算法-主成分分析PCA的Python实现文章来源地址https://www.toymoban.com/news/detail-404256.html

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

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

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

相关文章

  • 数学建模-最优包衣厚度终点判别法(主成分分析)

    💞💞 前言 hello hello~ ,这里是viperrrrrrr~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页:viperrrrrrr的博客 💥 欢迎学习数学建模算法、大数据、前端等知识,让我们一起向目标进发!        包衣是将片剂的外表面均匀地包裹上一层衣膜的过程,旨在控制药

    2024年04月17日
    浏览(30)
  • 数学建模——古代玻璃制品的成分分析与鉴别的设计

    摘  要 本文针对不同类别文物样品的相关数据,利用数学模型及分析算法,探求不同玻璃文物中类型、颜色、纹饰、化学成分等数据之间存在的差异与联系,探索古代玻璃文物化学成分之间存在的规律,探究对未知类别玻璃文物进行鉴别的机理。 问题一中,利用卡方检验从

    2024年02月08日
    浏览(30)
  • 数学建模学习(102):成分数据分析之中心对数比转换【已修改】

    为什么要写这篇文章?背景源于2022国赛C题的评阅要点,很多参加数模的同学应该都看到了,估计几乎没有人听说过这个方法。因此,本文对该方法进行一个讲解。当然,其实你在这次比赛中没有用到这个方法,也不影响你的国奖。在我国赛辅导的几个同学中,我也是教他们

    2024年02月06日
    浏览(33)
  • 2022全国数学建模-C 题复盘 古代玻璃制品的成分分析与鉴别

    上个月参加了全国数学建模大赛做了C题,很幸运获得省一并送评国奖,整理了一下程序并重新复盘了一下,在这里简单展示 问题一、二、三的部分小问 解题思路与过程以及python程序。 读取、展示数据: data1:   data2: data3: 预处理: 1)填补表单1颜色缺失值以及表单2化学成分

    2024年02月09日
    浏览(27)
  • 【Python数学建模常用算法代码——蒙特卡洛模型】

    蒙特卡洛方法的理论支撑其实是概率论或统计学中的大数定律。基本原理简单描述是先大量模拟,然后计算一个事件发生的次数,再通过这个发生次数除以总模拟次数,得到想要的结果。下面我们以三个经典的小实验来学习下蒙特卡洛算法思想。 实验原理 在正方形内部有一

    2024年02月02日
    浏览(35)
  • 数学建模学习(2):数学建模各类常用的算法全解析

    常见的评价算法  1.层次分析法 基本思想         是定性与定量相结合的多准则决策、评价方法。将决策的有关元素分解成 目标层、准则层和方案层 ,并通过人们的 判断对决策方案的 优劣进行排序 ,在此基础上进行定性和定量分析。它把人的思维过程层次化、数量化,

    2024年02月09日
    浏览(27)
  • 数学建模十大经典算法和常用算法

    1、蒙特卡罗算法: 该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时通过模拟可以来检验自己模型的正确性。 2、数据拟合、参数估计、插值等数据处理算法: 比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于算法,通常使用Matlab作为

    2024年02月07日
    浏览(30)
  • 数学建模常用算法—模糊综合评价

    目录 模型的含义 模型的数学概念 模型的建立与求解 matlab代码实现 今天给大家讲解一下国赛中常用到的评价模型,模糊综合评价法。 模糊综合评价法是一种基于模糊数学的综合评价方法。该综合评价法根据模糊数学的隶属度理论把定性评价转化为定量评价,即用模糊数学对

    2023年04月12日
    浏览(37)
  • 数学建模常用算法—马尔可夫预测

    今天数模君带大家学习一下数学建模中的预测算法之马尔科夫预测。 目录 模型的含义 实例分析 马尔可夫(Markov)预测法,就是一种关于事件发生的概率预测方法。它是根据事件的目前状况来预测其将来各个时刻(或时期)变动状况的一种预测方法。马尔可夫预测法是地理预测

    2024年02月09日
    浏览(36)
  • 数学建模常用算法—多目标规划

    前面我们已经学习了线性规划及非线性规划,接下来带大家一起学习多目标规划模型。 目录 模型的含义 求解思路 建立目标规划的条件 目标规划的目标函数 目标规划的模型应用 模型的建立 目标规划的一般数学模型 模型示例与求解 多目标规划是数学规划的一个分支。研究多

    2023年04月12日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包