PCA实现高维数据可视化

1 简介

PCA(Principal Component Analysis)即主成分分析是最常见的降维方法, 它是一种统计方法。用于高维数据集的探索与可视化,还可用于数据的压缩和预处理。可通过正交变换把具有相关性的高维变量转换为线性无关的低维变量,这组低维变量称为主成分,它能保留原始数据的信息。

2 PCA算法过程

1)输入:样本集D={x1,x2,…,xn};低维空间数d’
2)过程:
①对所有样本进行中心化;
②计算样本的协方差矩阵XX^(T);
③对协方差矩阵XX^(T)作特征值分解;
④取最大的d’个特征值所对应的特征向量w1,w2,…,w(d’)
3)输出:
投影矩阵W=(w1,w2,…,w(d’))

PCA应用:
主成分分析作为基础的数学分析方法,其实际应用十分广泛,比如人口统计学、数量地理学、分子动力学模拟、数学建模、数理分析等学科中均有应用,是一种常用的多变量分析方法。 [1]

3 sklearn实现主成分分析

1)完整代码如下(代码可复现):

"""
PCA实现高维数据可视化  03.28
目标:已知鸢尾花数据是4维,共3类样本,使用PCA实现降维,
并在二维平面上可视化
"""
# 1 建立工程,导入sklearn 相关工具包
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
# 2 加载数据并进行降维
data = load_iris()
y = data.target
x = data.data
pca = PCA(n_components = 2)
reduced_x = pca.fit_transform(x)
# 3 按类别对降维后的数据进行保存
red_x,red_y = [],[]
blue_x,blue_y = [],[]
green_x,green_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:
        blue_x.append(reduced_x[i][0])
        blue_y.append(reduced_x[i][1])
    else:
        green_x.append(reduced_x[i][0])
        green_y.append(reduced_x[i][1])
# 4 降维后数据可视化
plt.scatter(red_x,red_y, c = 'r',marker = 'x')
plt.scatter(blue_x,blue_y, c = 'b',marker = 'D')
plt.scatter(green_x,green_y, c = 'g',marker = '.')
plt.show()

(2)部分代码解析:
1)加载数据集并进行降维操作
其中y为数据集中的标签,x为属性数据
指定主成分个数n_components 为2
对原始数据降维后保存于reduced_x中

data = load_iris()
y = data.target
x = data.data
pca = PCA(n_components = 2)
reduced_x = pca.fit_transform(x)

2)按类别对降维后数据保存
先用红蓝绿三种颜色分别表示数据;
用for in 循环按标签y分明类别0,1或其他,
将不同数据保存在不同列表中

red_x,red_y = [],[]
blue_x,blue_y = [],[]
green_x,green_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:
        blue_x.append(reduced_x[i][0])
        blue_y.append(reduced_x[i][1])
    else:
        green_x.append(reduced_x[i][0])
        green_y.append(reduced_x[i][1])

3)将降维后的数据可视化,用plt.scatter(数据,标签,颜色,标记类型)
处理分类图,plt.show()绘出图形

plt.scatter(red_x,red_y, c = 'r',marker = 'x')
plt.scatter(blue_x,blue_y, c = 'b',marker = 'D')
plt.scatter(green_x,green_y, c = 'g',marker = '.')
plt.show()
  1. 由此代码绘出的图形如下:
    鸢尾花分类图
    5)对代码存在的疑问:
    sklearn中的iris数据集如何下载到本地?
    若要读取本地数据进行上述操作该怎样做?

参考文献
[1]林海明,杜子芳. 主成分分析综合评价应该注意的问题[J]. 统计研究,2013,30(08):25-31

小白一枚,求赐教

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在高维数据可视化中,支持向量机(SVM)在处理高维数据方面表现出色。 支持向量机是一种基于机器学习的分类算法,它通过找到最佳的超平面来实现数据的分类。在处理高维数据时,SVM可以发现不同属性之间的关系,从而从数据中提取出有用的信息。 在MATLAB中,我们可以使用SVM工具箱来实现高维数据的可视化。首先,我们需要将数据加载到MATLAB环境中,并将其准备为适合SVM训练的格式。接下来,我们可以使用SVM工具箱的函数,如fitcsvm或fitcecoc,来训练SVM模型。这些函数允许我们选择不同的SVM内核类型和参数配置,以便更好地拟合数据。 一旦我们训练好了SVM模型,我们可以使用plot函数将高维数据可视化。通过在二维空间中绘制数据点,我们可以观察它们在不同类别之间的分布。此外,我们还可以用不同的颜色或标记来表示数据点的类别,以增加可视化的信息。 在处理高维数据时,SVM在可视化方面的优点之一是它可以通过使用核技巧将数据从高维空间映射到低维空间。这样可以降低绘图的复杂性,并且可以更好地展示分类结果。 综上所述,SVM在高维数据可视化中具有较强的优势,并且在MATLAB环境中可以方便地实现。通过使用SVM工具箱提供的函数和技术,我们可以有效地展示高维数据的分类结果和特性,从而更好地理解数据。 ### 回答2: SVM(支持向量机)是一种常用的机器学习算法,用于分类和回归问题。它在高维数据的可视化中也有一定的应用。 在Matlab中,可以使用SVM分类器训练模型,并使用其特性来可视化高维数据。首先,将高维数据输入到SVM分类器中,并将其转换为一个可以进行可视化的二维或三维数据集。可以使用主成分分析(PCA)或线性判别分析(LDA)等降维技术,将高维数据映射到二维或三维空间中。 接下来,可以使用Matlab中的绘图函数(如scatter、plot3等)将转换后的数据集进行可视化。如果降维后的数据仍然是线性可分的,则可以绘制二维或三维的散点图,并使用不同的样本类别标记颜色或形状来区分不同的类别。如果数据在降维后变得不可分或重叠,可以使用决策边界或等高线来表示SVM模型的分类结果。 此外,还可以通过绘制支持向量和超平面来显示SVM模型的特征。支持向量是离超平面最近的数据点,可以通过绘制它们来显示SVM模型边界的位置。超平面是SVM分类器决策边界的几何概念,可以用于将不同类别的数据分隔开。通过绘制支持向量和超平面,可以更直观地观察到SVM模型对高维数据的分类效果。 综上所述,SVM算法可以通过Matlab中的可视化函数,将高维数据可视化到二维或三维空间中。这样做有助于我们更好地理解和分析数据,并对SVM模型的分类结果进行评估。 ### 回答3: 在使用SVM(支持向量机)进行高维数据可视化方面,MATLAB提供了一些功能和工具,可以帮助我们将高维数据可视化到二维或三维空间中以便于观察和分析。 首先,MATLAB中的SVM工具箱提供了一些函数和方法来实现分类和回归问题的SVM模型构建。我们可以使用svmtrain函数来训练SVM分类器,并使用svmclassify函数来进行分类预测。这可以帮助我们在线性或非线性问题中对数据进行分类。 一旦我们得到了SVM分类器,我们可以使用svmplot函数将高维数据可视化到二维空间中。该函数可以根据SVM模型的超平面和支持向量来绘制决策边界和支持向量。这样可以帮助我们直观地了解分类结果,并判断SVM模型的性能。 此外,MATLAB还提供了一些其他的图形函数和工具,可以帮助我们进一步分析和可视化高维数据。例如,scatter函数可以用来绘制散点图,可以用不同的颜色或符号代表不同的类别。surf函数可以用来绘制三维曲面图,可以将高维数据映射到三维空间中进行可视化。 另外,我们还可以使用降维方法如主成分分析(PCA)来将高维数据降到二维或三维空间中进行可视化。MATLAB中提供了pca函数来实现PCA分析,可以通过计算数据的主成分来减少维度。然后可以使用散点图或曲面图等方法进行可视化。 综上所述,MATLAB提供了一些功能和工具,可以帮助我们进行SVM高维数据的可视化。通过利用SVM的决策边界和支持向量,以及其他图形函数和降维方法,我们可以直观地观察和分析高维数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值