返回顶部
首页 > 资讯 > 后端开发 > Python >Python机器学习之PCA降维算法的示例分析
  • 690
分享到

Python机器学习之PCA降维算法的示例分析

2023-06-15 03:06:58 690人浏览 独家记忆

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

摘要

小编给大家分享一下python机器学习之PCA降维算法的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、算法概述主成分分析 (Principal Com

小编给大家分享一下python机器学习之PCA降维算法的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一、算法概述

  • 主成分分析 (Principal ComponentAnalysis,PCA)是一种掌握事物主要矛盾的统计分析方法,它可以从多元事物中解析出主要影响因素,揭示事物的本质,简化复杂的问题。

  • PCA 是最常用的一种降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的方差最大,以此使用较少的维度,同时保留较多原数据的维度。

  • PCA 算法目标是求出样本数据协方差矩阵的特征值和特征向量,而协方差矩阵的特征向量的方向就是PCA需要投影的方向。使样本数据向低维投影后,能尽可能表征原始的数据。

  • PCA 可以把具有相关性的高维变量合成为线性无关的低维变量,称为主成分。主成分能够尽可能的保留原始数据的信息。

  • PCA 通常用于高维数据集的探索与可视化,还可以用作数据压缩和预处理等。

二、算法步骤

Python机器学习之PCA降维算法的示例分析

将原始数据按行组成m行n列的矩阵X

将X的每一列(代表一个属性字段)进行零均值化,即减去这一列的均值

求出协方差矩阵

求出协方差矩阵的特征值及对应的特征向量r

将特征向量按对应特征值大小从左到右按列排列成矩阵,取前k列组成矩阵P

计算降维到k维的数据

三、相关概念

  • 方差:描述一个数据的离散程度

Python机器学习之PCA降维算法的示例分析

  • 协方差:描述两个数据的相关性,接近1就是正相关,接近-1就是负相关,接近0就是不相关

Python机器学习之PCA降维算法的示例分析

  • 协方差矩阵:协方差矩阵是一个对称的矩阵,而且对角线是各个维度的方差

Python机器学习之PCA降维算法的示例分析

  • 特征值:用于选取降维的K个特征值

  • 特征向量:用于选取降维的K个特征向量

四、算法优缺点

优点

  • 仅仅需要以方差衡量信息量,不受数据集以外的因素影响。

  • 各主成分之间正交,可消除原始数据成分间的相互影响的因素。

  • 计算方法简单,主要运算是特征值分解,易于实现。

缺点

  • 主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强。

  • 方差小的非主成分也可能含有对样本差异的重要信息,降维丢弃的数据可能对后续数据处理有影响。

五、算法实现

自定义实现

import numpy as np# 对初始数据进行零均值化处理def zeroMean(dataMat):    # 求列均值    meanVal = np.mean(dataMat, axis=0)    # 求列差值    newData = dataMat - meanVal    return newData, meanVal# 对初始数据进行降维处理def pca(dataMat, percent=0.19):    newData, meanVal = zeroMean(dataMat)    # 求协方差矩阵    covMat = np.cov(newData, rowvar=0)    # 求特征值和特征向量    eigVals, eigVects = np.linalg.eig(np.mat(covMat))    # 抽取前n个特征向量    n = percentage2n(eigVals, percent)    print("数据降低到:" + str(n) + '维')    # 将特征值按从小到大排序    eigValIndice = np.argsort(eigVals)    # 取最大的n个特征值的下标    n_eigValIndice = eigValIndice[-1:-(n + 1):-1]    # 取最大的n个特征值的特征向量    n_eigVect = eigVects[:, n_eigValIndice]    # 取得降低到n维的数据    lowDataMat = newData * n_eigVect    reconMat = (lowDataMat * n_eigVect.T) + meanVal    return reconMat, lowDataMat, n# 通过方差百分比确定抽取的特征向量的个数def percentage2n(eigVals, percentage):    # 按降序排序    sortArray = np.sort(eigVals)[-1::-1]    # 求和    arraySum = sum(sortArray)    tempSum = 0    num = 0    for i in sortArray:        tempSum += i        num += 1        if tempSum >= arraySum * percentage:            return numif __name__ == '__main__':    # 初始化原始数据(行代表样本,列代表维度)    data = np.random.randint(1, 20, size=(6, 8))    print(data)    # 对数据降维处理    fin = pca(data, 0.9)    mat = fin[1]    print(mat)

利用Sklearn库实现

import matplotlib.pyplot as pltfrom sklearn.decomposition import PCAfrom sklearn.datasets import load_iris# 加载数据data = load_iris()x = data.datay = data.target# 设置数据集要降低的维度pca = PCA(n_components=2)# 进行数据降维reduced_x = pca.fit_transfORM(x)red_x, red_y = [], []green_x, green_y = [], []blue_x, blue_y = [], []# 对数据集进行分类for i in range(len(reduced_x)):    if y[i] == 0:        red_x.append(reduced_x[i][0])        red_y.append(reduced_x[i][1])    elif y[i] == 1:        green_x.append(reduced_x[i][0])        green_y.append(reduced_x[i][1])    else:        blue_x.append(reduced_x[i][0])        blue_y.append(reduced_x[i][1])plt.scatter(red_x, red_y, c='r', marker='x')plt.scatter(green_x, green_y, c='g', marker='D')plt.scatter(blue_x, blue_y, c='b', marker='.')plt.show()

六、算法优化

PCA是一种线性特征提取算法,通过计算将一组特征按重要性从小到大重新排列得到一组互不相关的新特征,但该算法在构造子集的过程中采用等权重的方式,忽略了不同属性对分类的贡献是不同的。

  • KPCA算法

KPCA是一种改进的PCA非线性降维算法,它利用核函数的思想,把样本数据进行非线性变换,然后在变换空间进行PCA,这样就实现了非线性PCA。

  • 局部PCA算法

局部PCA是一种改进的PCA局部降维算法,它在寻找主成分时加入一项具有局部光滑性的正则项,从而使主成分保留更多的局部性信息。

Python的数据类型有哪些?

python的数据类型:1. 数字类型,包括int(整型)、long(长整型)和float(浮点型)。2.字符串,分别是str类型和unicode类型。3.布尔型,Python布尔类型也是用于逻辑运算,有两个值:True(真)和False(假)。4.列表,列表是Python中使用最频繁的数据类型,集合中可以放任何数据类型。5. 元组,元组用”()”标识,内部元素用逗号隔开。6. 字典,字典是一种键值对的集合。7. 集合,集合是一个无序的、不重复的数据组合。

以上是“Python机器学习之PCA降维算法的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网Python频道!

--结束END--

本文标题: Python机器学习之PCA降维算法的示例分析

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

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

猜你喜欢
  • Python机器学习之PCA降维算法的示例分析
    小编给大家分享一下Python机器学习之PCA降维算法的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、算法概述主成分分析 (Principal Com...
    99+
    2023-06-15
  • Python机器学习之PCA降维算法详解
    目录一、算法概述二、算法步骤三、相关概念四、算法优缺点五、算法实现六、算法优化一、算法概述 主成分分析 (Principal ComponentAnalysis,PCA)是一种掌握事物主要矛盾的统计分析方法...
    99+
    2022-06-02
    Python PCA降维算法 python机器学习
  • python机器学习算法与数据降维的示例分析
    这篇文章主要介绍python机器学习算法与数据降维的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、数据降维机器学习中的维度就是特征的数量,降维即减少特征数量。降维方式有:特征选择、主成分分析。1.特征选择...
    99+
    2023-06-25
  • Python机器学习之AdaBoost算法的示例分析
    这篇文章将为大家详细讲解有关Python机器学习之AdaBoost算法的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、算法概述AdaBoost 是英文 Adaptive Boosting(自适...
    99+
    2023-06-15
  • python机器学习算法与数据降维分析详解
    目录一、数据降维1.特征选择2.主成分分析(PCA)3.降维方法使用流程二、机器学习开发流程1.机器学习算法分类2.机器学习开发流程三、转换器与估计器1.转换器2.估计器一、数据降维...
    99+
    2024-04-02
  • python机器学习Sklearn中adaboost算法的示例分析
    这篇文章主要为大家展示了“python机器学习Sklearn中adaboost算法的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python机器学习Sklearn中adaboost算法...
    99+
    2023-06-21
  • python机器学习中特征工程算法的示例分析
    这篇文章主要为大家展示了“python机器学习中特征工程算法的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python机器学习中特征工程算法的示例分析”这篇文章吧。一、机器学习概述机器...
    99+
    2023-06-25
  • python机器学习之神经网络的示例分析
    这篇文章主要介绍了python机器学习之神经网络的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python可以做什么Python是一种编程语言,内置了许多有效的工具...
    99+
    2023-06-14
  • Python机器学习之逻辑回归的示例分析
    这篇文章主要介绍了Python机器学习之逻辑回归的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Python主要用来做什么Python主要应用于:1、Web开发;2、...
    99+
    2023-06-15
  • Python机器学习中pandas的示例分析
    小编给大家分享一下Python机器学习中pandas的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python的五大特点是什么python的五大特点:1...
    99+
    2023-06-15
  • 机器学习强基计划8-1:图解主成分分析PCA算法(附Python实现)
    目录 0 写在前面 1 为什么要降维? 2 主成分分析原理 3 PCA与SVD的联系 4 Python实现 0 写在前面 机器学习强基计划聚焦深度和广度,加深对机器学习模型的...
    99+
    2023-09-21
    python 算法 人工智能 数据挖掘
  • opencv3机器学习之EM算法示例详解
    目录引言一、opencv3.0中自带的例子二、trainEM实现自动聚类进行图片目标检测引言 不同于其它的机器学习模型,EM算法是一种非监督的学习算法,它的输入数据事先不需要进行标注...
    99+
    2024-04-02
  • Python全栈之学习JQuery的示例分析
    这篇“Python全栈之学习JQuery的示例分析”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“Python全栈之学习JQuery的示例分析”,小编整理了以下知识点,请大家跟着小编的步伐一步一...
    99+
    2023-06-29
  • Python全栈之学习HTML的示例分析
    这篇“Python全栈之学习HTML的示例分析”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“Python全栈之学习HTML的示例分析”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇...
    99+
    2023-06-29
  • Python机器学习之AdaBoost算法
    目录一、算法概述二、算法原理三、算法步骤四、算法实现五、算法优化一、算法概述 AdaBoost 是英文 Adaptive Boosting(自适应增强)的缩写,由 Yoav Freund 和Robert S...
    99+
    2022-06-02
    Python AdaBoost算法 Python机器学习
  • python之CSF算法的示例分析
    这篇文章给大家分享的是有关python之CSF算法的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 引言机载LiDAR可以获取快速、低成本地获取大区域的高精度地形测量值。为了获取高精度的地形数据(厘米...
    99+
    2023-06-20
  • Python深度学习算法实例分析
    本篇内容主要讲解“Python深度学习算法实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python深度学习算法实例分析”吧!最小二乘法所有的深度学习算法都始于下面这个数学公式(我已将其...
    99+
    2023-06-03
  • Vue.js学习之过滤器的示例分析
    这篇文章给大家分享的是有关Vue.js学习之过滤器的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Vue.Js中的过滤器基础过滤器是一个通过输入数据,能够及时对数据进行处...
    99+
    2024-04-02
  • Python机器学习之随机梯度下降法的实现
    目录随机梯度下降法随机梯度下降法的实现随机梯度下降法 为什么使用随机梯度下降法? 如果当我们数据量和样本量非常大时,每一项都要参与到梯度下降,那么它的计算量时非常大的,所以我们可以采...
    99+
    2023-02-27
    Python随机梯度下降法 Python梯度下降法 Python梯度下降
  • 【数学建模】常用算法-主成分分析PCA的Python实现
    1前言 本文主要讲解主成分分析析法(PCA)的python实现,后续会跟进实例分析 2 原理-代码实现 2.1 实现步骤 主成分分析PCA是一种应用广泛的和降维方法,对其实现做以下归纳 2.2 代码实...
    99+
    2023-10-07
    python 算法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作