IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> PCA主成分分析算法专题【Python机器学习系列(十五)】 -> 正文阅读

[人工智能]PCA主成分分析算法专题【Python机器学习系列(十五)】

PCA主成分分析算法专题【Python机器学习系列(十五)】


????在这里插入图片描述

🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??


1. PCA简介

主成分分析算法,即Proncipal Components Analysis,简称PCA,是一种经典的线性降维算法。
主成分分析希望能通过旋转坐标系,从而筛选出在新的坐标系下包含信息较少的特征,从而达到降维的效果。对于n维特征变量,PCA使用样本集合中对应子变量上取值的方差来表示该特征的重要程度,方差越大则该特征的重要程度越高,反之越低。
?
假设如图所示,存在A、B两个特征,这两个特征的数据点都分布在一条直线周围。

???????????请添加图片描述
?
则可以将坐标系的一条轴(x轴)旋转到该直线的位置,如下图所示:
?????请添加图片描述

则得到了两个新特征:新特征C和新特征D。因为数据在新特征D方向上的方差很小,取值基本接近于0,所以该特征携带信息量很少,可以将该特征忽略。这样,我们放弃了特征A和特征B,但是得到了新特征C,数据的维度因此下降一,从而达到了降维的效果。(对坐标系进行旋转后的新坐标,可以通过正交变换来描述。)
?
所以,PCA算法的核心可以概括为:
假设n维空间中,特征数据为 x = { x 1 , x 2 , . . . , x n } x=\{x_1,x_2,...,x_n\} x={x1?,x2?,...,xn?},即原数据有n个特征,期望在降维后保留n个特征,即去掉(n-m)个特征。
要去掉的特征的轴,即可以理解为方差最小的轴。保留的轴是方差较大的轴。
而我们要做的,就是找到需要丢弃的轴,并计算出保留的轴旋转及降维后,在新的坐标系的新坐标。最终得出维度更低的数据集。


2. python 实现 鸢尾花数据集PCA降维

读取鸢尾花数据集的代码如下:

import numpy as np
from sklearn.datasets import load_iris


# 加载鸢尾花数据
iris = load_iris()

# 特征数据,有四个特征
data = iris.data
print(data)

数据展示如下,可以清楚地看到,原数据共有四个特征(即四列)。
??????????在这里插入图片描述


将四维数据降维为二维数据

def pca(dataMat, top):
    # 求每个特征的均值 并去中心化处理
    meanVals = np.mean(dataMat, axis=0)
    meanRemoved = dataMat - meanVals
    # 求协方差矩阵  rowvar=False表示每列表示一个特征。
    covMat = np.cov(meanRemoved, rowvar=False)
    # 求解协方差矩阵 的 特征值、特征向量
    eigVals, eigVects = np.linalg.eig(np.mat(covMat))
    # 假设原来下标是[0 1 2 3],则使用np.argsort后返回的是[0 1 2 3]这组下标根据数值大小升序 排序后的结果
    eigValInd = np.argsort(eigVals)
    # 切片取出最后 top 个特征值的下标
    n_eigValInd = eigValInd[:-(top + 1):-1]
    # 根据下标 取出特征向量
    redEigVects = eigVects[:, n_eigValInd]
    lowDDataMat = meanRemoved * redEigVects
    # 逆操作
    # reconMat = (lowDDataMat * redEigVects.T) + meanVals
    return lowDDataMat


after_pca_data = pca(data, 2)
print(after_pca_data)

降维后的数据结果如下图所示:
???????????在这里插入图片描述


3. sklearn库实现 鸢尾花数据集PCA降维案例

使用sklearn库实现鸢尾花数据集PCA降维,代码如下:

from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
import numpy as np


# 加载鸢尾花数据
iris = load_iris()

# 特征数据,有四个特征
data = iris.data
# 标签数据
target = iris.target

# 去中心化
meanVals = np.mean(data, axis=0)
data_transformed = data - meanVals
# 将四维数据降维到2维
pca = PCA(n_components=2)

# 降维后的数据
after_pca_data = pca.fit_transform(data_transformed)
print(after_pca_data)

其中,参数n_components=2表示的也是降低后 结果数据的维度,而不是需要降低的维度。
数据处理结果如下,成功将数据降维为二维:
????????????在这里插入图片描述


两种方法处理的结果不能说一模一样,但是基本上还是差不多的。(只在第二列数据的符号上存在一些差异,这与sklearn提供接口的底层逻辑有关。)
?
关于PCA接口的参数,
n_components
①可以是一个大于等于1的整数,表示保留的特征的个数,
②也可以是一个(0,1]之间的浮点数,表示方差贡献率达到的标准,选择达到标准的主成分,而结果的维度数也随之确定。
③还可以设置为’mle’(极大似然估计), 此时PCA类会用MLE算法根据特征的方差分布情况自己去选择一定数量的主成分特征来降维。
?
whiten: 白化。
即,对降维后的数据的每个特征进行标准化,使方差都为1。默认值是False,即不进行白化。
对于PCA降维本身而言,一般不需要白化。如果PCA降维后有后续的数据处理动作,可以考虑白化。
?
此外,此处代码中,在使用pca之前对数据进行了去中心化,但也不限于此,实际应用时灵活多变,也可以选择其他数据处理方式,如标准化,归一化。


本次分享就到这里,小啾感谢您的关注与支持!
🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??🌹??

本专栏更多好文欢迎点击下方连接:
?
1.初识机器学习前导内容_你需要知道的基本概念罗列_以PY为工具 【Python机器学习系列(一)】
?
2.sklearn库数据标准预处理合集_【Python机器学习系列(二)】
?
3.K_近邻算法_分类Ionosphere电离层数据【python机器学习系列(三)】
?
4.python机器学习 一元线性回归 梯度下降法的实现 【Python机器学习系列(四)】
?
5.sklearn实现一元线性回归 【Python机器学习系列(五)】
?
6.多元线性回归_梯度下降法实现【Python机器学习系列(六)】
?
7.sklearn实现多元线性回归 【Python机器学习系列(七)】
?
8.sklearn实现多项式线性回归_一元/多元 【Python机器学习系列(八)】
?
9.逻辑回归原理梳理_以python为工具 【Python机器学习系列(九)】
?
10.sklearn实现逻辑回归_以python为工具【Python机器学习系列(十)】
?
11.决策树专题_以python为工具【Python机器学习系列(十一)】
?
12.文本特征提取专题_以python为工具【Python机器学习系列(十二)】
?
13.朴素贝叶斯分类器_以python为工具【Python机器学习系列(十三)】
?
14.SVM 支持向量机算法(Support Vector Machine )【Python机器学习系列(十四)】

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:29:07  更:2022-09-21 00:29:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 18:38:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计