iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >【数学建模】常用算法-主成分分析PCA的Python实现
  • 525
分享到

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

python算法 2023-10-07 11:10:57 525人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

1前言 本文主要讲解主成分分析析法(PCA)的python实现,后续会跟进实例分析 2 原理-代码实现 2.1 实现步骤 主成分分析PCA是一种应用广泛的和降维方法,对其实现做以下归纳 2.2 代码实

1前言

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

2 原理-代码实现

2.1 实现步骤

主成分分析PCA是一种应用广泛的和降维方法,对其实现做以下归纳在这里插入图片描述

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 datasetsimport matplotlib.pyplot as plt# 导入鸢尾花数据集iris = datasets.load_iris()X = iris.datay = iris.target

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

X.shape# (150, 4)

计算协方差矩阵

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

在这里插入图片描述
可以看到协方差矩阵为4*4的矩阵,然后我们计算该矩阵的特征值和特征向量

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

在这里插入图片描述
然后计算我们需要的P,这里我们保留3个主成分

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

得到了一个4行3列的矩阵
在这里插入图片描述
然后利用P求得降维后的数据

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

降维后的数据为(150, 4)*(4, 3)=(150, 3)
也就是150条,3列的数据,数据由原来的4维降低到了3维
在这里插入图片描述

3 基于Sklearn的实现

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

在这里插入图片描述

来源地址:https://blog.csdn.net/qq_44319167/article/details/128839122

--结束END--

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

本文链接: https://www.lsjlt.com/news/424404.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【数学建模】常用算法-主成分分析PCA的Python实现
    1前言 本文主要讲解主成分分析析法(PCA)的python实现,后续会跟进实例分析 2 原理-代码实现 2.1 实现步骤 主成分分析PCA是一种应用广泛的和降维方法,对其实现做以下归纳 2.2 代码实...
    99+
    2023-10-07
    python 算法
  • 主成分分析法(PCA)及其python实现
    主成分分析法(Principal Component Analysis,PCA)是一种用于把高维数据降成低维,使分析变得更加简便的分析方法。比如我们的一个样本可以由 n n ...
    99+
    2023-09-03
    python 机器学习 开发语言 数学建模
  • 主成分分析(PCA)及python原理实现
    PCA定义: 该定义来自于秒懂百科:          PCA(principal components analysis)即主成分分析技术,又称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标。         在统计学中,...
    99+
    2023-10-24
    人工智能 机器学习
  • 机器学习强基计划8-1:图解主成分分析PCA算法(附Python实现)
    目录 0 写在前面 1 为什么要降维? 2 主成分分析原理 3 PCA与SVD的联系 4 Python实现 0 写在前面 机器学习强基计划聚焦深度和广度,加深对机器学习模型的...
    99+
    2023-09-21
    python 算法 人工智能 数据挖掘
  • 主成分分析法(PCA)的理解(附python代码案例)
    目录 一、PCA简介二、举个例子三、计算过程(公式)3.0 题干假设3.1 标准化3.2 计算协方差矩阵3.3 计算特征值和特征值向量3.3 多重共线性检验(可跳过)3.4 适合性检验(可跳过...
    99+
    2023-08-31
    python 人工智能 算法 线性代数
  • R语言实现PCA主成分分析图的示例代码
    目录简介开始作图1. PCA 分析图本质上是散点图2. 为不同类别着色3. 样式微调简介 主成分分析(Principal Component Analysis,PCA)是一种无监督的...
    99+
    2024-04-02
  • python数学建模实例分析
    SciPy 学习''' SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、 信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。 ''' # 安装sc...
    99+
    2023-05-14
    Python
  • Python机器学习之PCA降维算法的示例分析
    小编给大家分享一下Python机器学习之PCA降维算法的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、算法概述主成分分析 (Principal Com...
    99+
    2023-06-15
  • python数学建模之Numpy和Pandas应用实例分析
    Numpy 学习# Numpy的基本使用 ''' Numpy提供了两种基本的对象:ndarray存储单一数据类型的多维数组; ufunc是能够对数组进行处理的函数 1-导...
    99+
    2023-05-15
    Python Numpy Pandas
  • Python实现机器学习算法的分类
    Python算法的分类 对葡萄酒数据集进行测试,由于数据集是多分类且数据的样本分布不平衡,所以直接对数据测试,效果不理想。所以使用SMOTE过采样对数据进行处理,对数据去重,去空,处...
    99+
    2024-04-02
  • Numpy库常用函数汇总:实现数据分析与建模的利器
    Numpy是Python中最常用的数学库之一,它集成了许多最佳的数学函数和操作。Numpy的使用非常广泛,包括统计、线性代数、图像处理、机器学习、神经网络等领域。在数据分析和建模方面,Numpy更是必不可少的工具之一。本文将分享...
    99+
    2024-01-19
    数据分析 Numpy 建模
  • python数学建模之三大模型与十大常用算法详情
    目录前言1 三大模型与十大常用算法【简介】1-1 三大模型1-2 十大常用算法2 python数据分析之Pandas 2-1什么是pandas2-2 pandas读取文件2-3 pa...
    99+
    2024-04-02
  • python数据挖掘Apriori算法实现关联分析
    目录摘要:关联分析Apriori原理算法实现挖掘关联规则利用Apriori算法解决实际问题发现毒蘑菇的相似特征总结:摘要: 主要是讲解一些数据挖掘中频繁模式挖掘的Apriori算法原...
    99+
    2024-04-02
  • Java常见的限流算法详细分析并实现
    目录为什么要限流限流算法计数器限流漏桶限流令牌桶限流为什么要限流 在保证可用的情况下尽可能多增加进入的人数,其余的人在排队等待,或者返回友好提示,保证里面的进行系统的用户可以正常使用...
    99+
    2024-04-02
  • Python字典的常用方法实例分析
    这篇文章主要讲解了“Python字典的常用方法实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python字典的常用方法实例分析”吧!字典添加与修改方法利用 [ ] 处理看到 [] 我...
    99+
    2023-06-29
  • Oracle中如何实现大数据分析和机器学习模型集成
    在Oracle中实现大数据分析和机器学习模型集成可以通过以下步骤实现: 使用Oracle Data Mining(ODM):OD...
    99+
    2024-04-09
    Oracle 大数据 机器学习
  • python机器学习算法与数据降维的示例分析
    这篇文章主要介绍python机器学习算法与数据降维的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、数据降维机器学习中的维度就是特征的数量,降维即减少特征数量。降维方式有:特征选择、主成分分析。1.特征选择...
    99+
    2023-06-25
  • 几种常见的Python算法实现分别有哪些
    这篇文章将为大家详细讲解有关几种常见的Python算法实现分别有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。选择排序选择排序是一种简单直观的排序算法。它的原理是这样:首先在未排序序列中...
    99+
    2023-06-02
  • Python字符串的常用方法实例分析
    这篇文章主要介绍“Python字符串的常用方法实例分析”,在日常操作中,相信很多人在Python字符串的常用方法实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python字符串的常用方法实例分析”的疑...
    99+
    2023-06-29
  • 2022全国数学建模-C 题复盘 古代玻璃制品的成分分析与鉴别
    上个月参加了全国数学建模大赛做了C题,很幸运获得省一并送评国奖,整理了一下程序并重新复盘了一下,在这里简单展示问题一、二、三的部分小问解题思路与过程以及python程序。 读取、展示数据: # 读取数据data1 = pd.rea...
    99+
    2023-09-01
    python 数据分析 数据挖掘 机器学习
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作