图像特征分析方法---- 多维数据可视化方法

多维数据可视化方法

原标题:多维数据可视化方法,看这一篇就够了

多维数据可视化是指通过一些手段将高维的数据展示在二维的平面中。

在进行探索性数据分析及对聚类或分类问题的验证中有着重要的应用。

本文着重介绍7种基于iris数据集的多维数据可视化方法。

首先请出万能的鸢尾花数据

import pandas as pd

import matplotlib.pyplot as plt

%matplotlib inline

data = pd.read_csv('../input/iris/iris.csv')

data.head()

说明:前四列是特征,第五列是分类。

数据可视化方法

接下来,具体介绍对上述四个特征的数据进行可视化操作的7种方法。

1.Andrews曲线

Andrews曲线将每个样本的属性值转化为傅里叶序列的系数来创建曲线。

通过将每一类曲线标成不同颜色可以可视化聚类数据,属于相同类别的样本的曲线通常更加接近并构成了更大的结构。

from pandas.tools.plotting import andrews_curves

plt.figure()

andrews_curves(data, 'species')

2.平行坐标

平行坐标可以看到数据中的类别以及从视觉上估计其他的统计量。

使用平行坐标时,每个点用线段联接,每个垂直的线代表一个属性,一组联接的线段表示一个数据点。可能是一类的数据点会更加接近。

from pandas.tools.plotting import parallel_coordinates

plt.figure()

parallel_coordinates(data, 'species')

3.RadViz图

RadViz图是基于基本的弹簧压力最小化算法(在复杂网络分析中也会经常应用)。简单来说,将一组点放在一个平面上,每一个点代表一个属性。

上述案例中有四个点,被放在一个单位圆上,你可以设想每个数据集通过一个弹簧联接到每个点上,弹力和他们属性值成正比(属性值已经标准化),数据集在平面上的位置是弹簧的均衡位置。不同类的样本用不同颜色表示。

from pandas.tools.plotting import radviz

plt.figure()

radviz(data, 'species')

4.因子分析

因子分析最初由心理学家斯皮尔曼发明,用于研究人类的人格特质。

著名的卡特尔16PF(16种相对独立的人格特征)就是应用因素分析方法得来。

是基于高斯潜在变量的一个简单线性模型,假设每一个观察值都是由低维的潜在变量加正态噪音构成。

from sklearn import decomposition

pca = decomposition.FactorAnalysis(n_components=2)

X = pca.fit_transform(data.ix[:,:-1].values)

pos=pd.DataFrame()

pos['X'] =X[:, 0]

pos['Y'] =X[:, 1]

pos['species'] = data['species']

ax = pos.ix[pos['species']=='virginica'].

plot(kind='scatter', x='X', y='Y', color='blue', label='virginica')

ax = pos.ix[pos['species']=='setosa'].

plot(kind='scatter', x='X', y='Y', color='green', label='setosa', ax=ax)

pos.ix[pos['species']=='versicolor'].

plot(kind='scatter', x='X', y='Y', color='red', label='versicolor', ax=ax)

5.主成分分析

主成分分析是由因子分析进化而来的一种降维的方法。

通过正交变换将原始特征转换为线性独立的特征,转换后得到的特征被称为主成分。主成分分析可以将原始维度降维到n个维度。

有一个特例情况,就是通过主成分分析将维度降低为2维,可以将多维数据转换为平面中的点,来达到多维数据可视化的目的。

from sklearn import decomposition

pca = decomposition.PCA(n_components=2)

X = pca.fit_transform(data.ix[:,:-1].values)

pos=pd.DataFrame()

pos['X'] =X[:, 0]

pos['Y'] =X[:, 1]

pos['species'] = data['species']

ax = pos.ix[pos['species']=='virginica'].

plot(kind='scatter', x='X', y='Y', color='blue', label='virginica')

ax = pos.ix[pos['species']=='setosa'].

plot(kind='scatter', x='X', y='Y', color='green', label='setosa', ax=ax)

pos.ix[pos['species']=='versicolor'].

plot(kind='scatter', x='X', y='Y', color='red', label='versicolor', ax=ax

需要注意,通过PCA降维实际上是损失了一些信息,我们也可以看一下保留的两个主成分可以解释原始数据的多少。

6.独立成分分析

独立成分分析将多源信号拆分成较大可能独立性的子成分,它最初不是用来降维,而是用于拆分重叠的信号。

from sklearn import decomposition

pca = decomposition.FastICA(n_components=2)

X = pca.fit_transform(data.ix[:,:-1].values)

pos=pd.DataFrame()

pos['X'] =X[:, 0]

pos['Y'] =X[:, 1]

pos['species'] = data['species']

ax = pos.ix[pos['species']=='virginica'].

plot(kind='scatter', x='X', y='Y', color='blue', label='virginica')

ax = pos.ix[pos['species']=='setosa'].

plot(kind='scatter', x='X', y='Y', color='green', label='setosa', ax=ax)

pos.ix[pos['species']=='versicolor'].

plot(kind='scatter', x='X', y='Y', color='red', label='versicolor', ax=ax)

Out[42]:

<matplotlib.axes._subplots.AxesSubplot at 0x7f47f274af28>

7.多维尺度分析

多维尺度分析试图寻找原始高维空间数据的距离的良好低维表征。

简单来说,多维尺度分析被用于数据的相似性,它试图用几何空间中的距离来建模数据的相似性,即用二维空间中的距离来表示高维空间的关系。

数据可以是物体之间的相似度、分子之间的交互频率或国家间交易指数,而且是基于欧式距离的距离矩阵。

多维尺度分析算法是一个不断迭代的过程,因此,需要使用max_iter来指定较大迭代次数,同时计算的耗时也是上面算法中较大的一个。

from sklearn import manifold

from sklearn.metrics import euclidean_distances

similarities = euclidean_distances(data.ix[:,:-1].values)

mds = manifold.MDS(n_components=2, max_iter=3000, eps=1e-9, dissimilarity="precomputed",

n_jobs=1)

X = mds.fit(similarities).embedding_

pos=pd.DataFrame(X, columns=['X', 'Y'])

pos['species'] = data['species']

ax = pos.ix[pos['species']=='virginica'].

plot(kind='scatter', x='X', y='Y', color='blue', label='virginica')

ax = pos.ix[pos['species']=='setosa'].

plot(kind='scatter', x='X', y='Y', color='green', label='setosa', ax=ax)

pos.ix[pos['species']=='versicolor'].

plot(kind='scatter', x='X', y='Y', color='red', label='versicolor', ax=ax)

看到以上几种算法的结果是不是觉得很神奇,相同类别的数据确实距离更近,尤其是后面几个降维算法的结果,基本上可以通过一些旋转或者坐标转换得到相似的图像。

文章来源:Cloga互联网笔记

《Python自然语言分析》这是一门基于Python实践自然语言处理典型应用场景的实战课程。理论与案例并行,通过编程实战将理论具体化展现,让学员更能理解其中的原理与实现方法。返回搜狐,查看更多

责任编辑:

声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
阅读 (1266)
不感兴趣
不感兴趣
  • 广告软文
  • 重复、旧闻
  • 文章质量差
  • 文字、图片、视频等展示问题
  • 标题夸张、文不对题
  • 与事实不符
  • 低俗色情
  • 欺诈或恶意营销
  • 疑似抄袭
  • 其他问题,我要吐槽
请勿重复提交

感谢您的反馈,我们将会减少此类文章的推荐

投诉
                    </div>

                    <div class="article-oper-bord article-oper-bord">
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值