精华内容
下载资源
问答
  • 2020-09-17 18:53:23

    机器学习系列-数据分析-平行坐标图

    1. 平行坐标图简介

    平行坐标系是一种常用的数据可视化方法,常用于高维几何多元数据的可视化。其在数据的可视化表示上克服了笛卡尔直角坐标系(平面直角坐标系、空间直角坐标系)很容易耗尽空间维度,最多只能进行三个维度数据可视化的缺陷,将多个维度的数据变量用多个平行的坐标轴进行表示,将来自于同一数据源的不同维度曲线连接成折线,在存在多种不同类别的数据源时,也可以通过不同颜色绘制属于不同类别数据源的折线,最终通过绘制出的图像进行相关的数据分析。

    2. 平行坐标图的绘制

    2.1 iris鸢尾花数据集

    此数据集中包括150个个体数据,其中每条个体数据中包括花萼长度花萼宽度花瓣长度花瓣宽度以及花的所属类别,此数据集在机器学习中的主要意义在于当我们已知花瓣的上述四种参数时可以判断它属于哪一种鸢尾花。

    在sklearn的datasets库中同样存在iris的标准数据集,引用方法如下:

    from sklearn.datasets import load_iris
    iris = load_iris()
    

    此时数据已经被存放在iris变量中

    但在我使用pandas库绘制平行坐标图的过程中,发现在sklearn提供的数据集当中,其class数据和data数据被分开存放,使得我们在区分不同类别的鸢尾花时的过程变得较为繁琐(但在该数据集中的确有标注区分不同类别的鸢尾花,但因为不在同一个数据表中,不方便使用pandas),于是改为使用本地的iris.csv数据集。

    本地数据集形式如下:

      sepal_length  sepal_width  petal_length  petal_width     target
    0             5.1          3.5           1.4          0.2     setosa
    1             4.9          3.0           1.4          0.2     setosa
    2             4.7          3.2           1.3          0.2     setosa
    3             4.6          3.1           1.5          0.2     setosa
    4             5.0          3.6           1.4          0.2     setosa
    ..            ...          ...           ...          ...        ...
    145           6.7          3.0           5.2          2.3  virginica
    146           6.3          2.5           5.0          1.9  virginica
    147           6.5          3.0           5.2          2.0  virginica
    148           6.2          3.4           5.4          2.3  virginica
    149           5.9          3.0           5.1          1.8  virginica
    
    [150 rows x 5 columns]
    

    2.2 iris平行坐标图图像绘制

    在python的很多第三方库中都有绘制平行坐标图的相关方法,在此处我使用的是pandas库中的plotting中自带的平行坐标图绘制方法parallel_coordinates,此方法的使用方式为parallel_coordinates(数据集, '分类依据')

    具体实现方法如下:

    import pandas as pd
    from pandas.plotting import parallel_coordinates
    #引用数据
    iris = pd.read_csv("在此处添加文件路径")
    #检查数据
    print(iris)
    parallel_coordinates(iris, 'target')
    

    绘制出平行坐标图如下:
    鸢尾花数据平行坐标图
    根据绘制出的平行坐标图我们可以对数据集中的数据进行分析筛选,并使用相关的机器学习的算法完成鸢尾花辨识的目的。

    结语

    本文使用数据集方式为使用本地文件数据,iris数据集可以点击此处链接下载,但也可以通过修改部分代码使用sklearn中提供的数据集实现绘制平行坐标图。
    本文仅介绍了iris鸢尾花数据的平行坐标图绘制,其他机器学习相关内容请见后续相关文章。
    如果发现文章内容存在错误或对文章内容存在疑惑,欢迎联系作者进行指正探讨,共同进步。

    转载请注明出处

    更多相关内容
  • 今天小编就为大家分享一篇Python实现平行坐标图的绘制(plotly)方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 平行坐标图,一种数据可视化的方式。以多个垂直平行的坐标轴表示多个维度,以维度上的刻度表示在该属性上对应值,相连而得的一个折线表示一个样本,以不同颜色区分类别。 但是很可惜,才疏学浅,没办法在Python里...
  • 这个 MATLAB 工具制作具有纸张质量的平行坐标图平行坐标图允许高维数据的可视化。 实现了以下功能: * 过滤和排序变量* 缩放变量范围* 找出构成情节的线条的颜色* 提取并突出显示特殊行* 绘制不同变量的范围 该...
  • Chart.js平行坐标图 Chart.js模块,用于绘制平行坐标图(PCP)。 添加新的图表类型: pcp 。 仅适用于Chart.js> = 3.0.0 安装 npm install --save chart.js chartjs-chart-pcp 用法 在Github上查看 五氯苯酚 数据...
  • Pyecharts库实现平行坐标图的绘制(iris数据集) 一、安装pyecharts库 首先需要安装pyecharts库,网上的教程有很多,但很多版本号并不好用,最终我是用了1.7.1这个版本。 安装pyecharts参考这篇文章,点这里 二、...

    Pyecharts库实现平行坐标图的绘制(iris数据集)

    一、安装pyecharts库

    首先需要安装pyecharts库,网上的教程有很多,但很多版本号并不好用,最终我是用了1.7.1这个版本。

    安装pyecharts参考这篇文章,点这里

    二、导入数据集

    import pandas as pd
    from sklearn import datasets
    
    flower_data = datasets.load_iris()  # 导入鸢尾花数据集
    
    # 将特征和标签合并为一个表格
    data_1 = pd.concat([pd.DataFrame(flower_data.data), pd.DataFrame(flower_data.target, columns=[4])], axis=1)
    
    data_2 = data_1.values.tolist()  # 提取表格的数据部分并转换成列表类型
    
    # 将标签0,1,2替换为"setosa","versicolor","virginica"
    for x in data_2:
        if x[4] == 0:
            x[4] = "setosa"
        elif x[4] == 1:
            x[4] = "versicolor"
        elif x[4] == 2:
            x[4] = "virginica"
    

    三、绘制平行坐标图

    使用pyecharts库绘制平行坐标图参考官方文档

    pyecharts官方文档

    如果想要显示不同数据线条的颜色,分别多次调用add函数分批导入数据就可以了。

    from pyecharts import options as opts
    from pyecharts.charts import Parallel
    
    c = (
        Parallel()
            .add_schema(
            [
                opts.ParallelAxisOpts(dim=0, name='花萼长度'),
                opts.ParallelAxisOpts(dim=1, name="花萼宽度"),
                opts.ParallelAxisOpts(dim=2, name="花瓣长度"),
                opts.ParallelAxisOpts(dim=3, name="花瓣宽度"),
                opts.ParallelAxisOpts(
                    dim=4,
                    name="类别",
                    type_="category",
                    data=["setosa", "versicolor", "virginica"],
                ),
            ]
        )
            .add("setosa", [x for x in data_2 if x[4] == "setosa"])
            .add("versicolor", [x for x in data_2 if x[4] == "versicolor"])
            .add("virginica", [x for x in data_2 if x[4] == "virginica"])  # 将不同类别的数据分三次导入,可显示不同颜色并生成label
        
            .set_global_opts(title_opts=opts.TitleOpts(title="鸢尾花数据集"))  # 图片label
            .render("iris_parallel_graph.html")
    )
    
    

    保存的html文件在py文件同一路径下可以找到。
    在这里插入图片描述

    展开全文
  • R语言绘制平行坐标图(PCP)示例

    千次阅读 2021-02-11 08:57:31
    R语言绘制平行坐标图(PCP)示例 前文在讲述时提到了,它在某种形式上是平行坐标图(parallel coordinate plot,PCP)的一种变体,那么本篇顺便提一下什么是平行坐标图平行坐标图是可视化高维几何和分析多元数据的常用...

    R语言绘制平行坐标图(PCP)示例

    b3a44f2e4febe005de25727d5b4e7a94.png

    前文在讲述

    时提到了,它在某种形式上是平行坐标图(

    parallel coordinate plot,PCP)的一种变体,那么本篇顺便提一下什么是平行坐标图。

    平行坐标图是可视化高维几何和分析多元数据的常用方法。为了显示n维空间中的一组对象,绘制了由n条平行且等距分布的轴,并将n维空间中的对象表示为在平行轴上具有顶点的折线,顶点在第i轴上的位置对应于该对象的第i维变量数值。

    3b52597c6683d27a98ba3a738a7daf1c.png

    尽管是折线图类型,但和普通的折线图是有区别的,平行坐标图不局限于描述单一趋势关系(如时间序列的不同时间点、反应底物的不同浓度梯度等),可以为不同类型变量的数值描述。

    然而平行坐标图的缺点在于,在数据非常密集时它们可能过于杂乱,导致难以辨认。解决此问题的通常做法是在图中突出显示感兴趣的对象或集合,同时淡化所有其它对象,这样就可以在滤除噪声的同时描述重要的部分。

    并且,平行坐标图中,轴的排列顺序可能会影响对数据的理解方式,归因于相邻变量之间的关系比非相邻变量更容易理解。因此,对轴进行重新排序可以帮助发现变量之间的潜在模式或相关性。

    此外,平行坐标图描述的大多数是数值变量的关系,而对于定性或分类变量比较勉强。相比之下,提供了对定性或分类变量关系的更好可视化方案。

    考虑到实际应用中,平行坐标图的出现频率并不高,因此本篇不对该图作过多的阐述。主要是通过3个R包,MASS、plotly和GGally,大致展示一下平行坐标图的基本绘制方法,以对这种统计图有个初步认识。

    示例数据集

    iris数据集,记录了150朵鸢尾花的花朵性状测量值。

    #数据集,详情 ?iris

    data(iris)

    head(iris)

    90633bcfd9d67a6730410af1a33acb3d.png

    这些鸢尾花来自三种物种,分别为setosa(n=50)、versicolor(n=50)和virginica(n=50)。

    包含四种性状,分别为萼片长度(sepal length,cm)、萼片宽度(sepal width,cm)、花瓣长度(petal length,cm)和花瓣宽度(petal width,cm)。

    ec0b683b00a2f9ee04c7e1ae30ce2f7e.png

    接下来通过平行坐标图,描绘出三种鸢尾花的四种性状特征,在整体水平初步观测下它们之间的属性区别。

    MASS包的平行坐标图

    首先是MASS包,函数parcoord()可用于绘制平行坐标图,风格简洁朴素。

    library(MASS)

    #赋值组别(鸢尾花物种)颜色

    iris[which(iris$Species == 'setosa'),'color']

    iris[which(iris$Species == 'versicolor'),'color']

    iris[which(iris$Species == 'virginica'),'color']

    #绘制平行坐标图,详情 ?parcoord

    parcoord(iris[1:4], col = iris$color, var.label = TRUE)

    fae4832ecb496f4e1962aed9c729a419.png

    在图中初步观察后,可以明显看到三种鸢尾花在四种性状特征的组成上是明显不同的。

    GGally包的平行坐标图

    GGally包是ggplot2的拓展包,延续了ggplot2的语法,因此对于熟悉ggplot2的同学们来说,使用GGally包的可视化调整将会非常容易上手。

    library(GGally)

    #一个简单示例,后面的函数(颜色、主题、坐标轴调整等)和 ggplot2 的用法是一致的

    #详情 ?ggparcoord

    ggparcoord(iris, columns = 1:4, groupColumn = 5,

    scale = 'uniminmax',

    showPoints = TRUE, alphaLines = 0.3) +

    scale_color_manual(values = c('#440154', '#36B677', '#FCE628')) +

    theme_bw()+

    theme(plot.title = element_text(size = 13)) +

    labs(x = '')

    be041202483326aa9da8c479743c9467.png

    同样地,在图中初步观察后,可以明显看到三种鸢尾花在四种性状特征的组成上是明显不同的。

    此外,通过函数ggparcoord()作图时,提供了多种对变量的标准化方法,由此可以获得不同的表现风格,对于探索变量间潜在结构很有帮助。大家有兴趣可以通过在ggparcoord()中添加参数“scale=”测试下。

    plotly包的平行坐标图

    plotly包提供了交互式风格,如果期望从图中查看感兴趣的一组变量,。

    library(plotly)

    #以数值指代分组 id

    iris[which(iris$Species == 'setosa'),'species_id']

    iris[which(iris$Species == 'versicolor'),'species_id']

    iris[which(iris$Species == 'virginica'),'species_id']

    #绘制平行坐标图,详情 ?plot_ly

    p

    type = 'parcoords',

    line = list(color = ~species_id,

    colorscale = list(c(1, '#440154'), c(2, '#36B677'), c(3, '#FCE628'))),

    dimensions = list(

    list(range = range(iris$Sepal.Length), label = 'Sepal Length', values = ~Sepal.Length),

    list(range = range(iris$Sepal.Width), label = 'Sepal Width', values = ~Sepal.Width),

    list(range = range(iris$Petal.Length), label = 'Petal Length', values = ~Petal.Length),

    list(range = range(iris$Petal.Width), label = 'Petal Width', values = ~Petal.Width))

    )

    p

    6e283beeb3ccf910f1e8f79bd156919a.png

    同样地,在图中初步观察后,可以明显看到三种鸢尾花在四种性状特征的组成上是明显不同的。

    plotly包的交互风格对于我们探索变量间潜在结构,以及识别重要的对象或者变量集合等很有帮助。

    展开全文
  • Python实现平行坐标图的绘制(plotly)

    千次阅读 2019-01-30 15:14:25
    平行坐标图简介  当数据的维度超过三维时,此时数据的可视化就变得不再那么简单。为解决高维数据的可视化问题,我们可以使用平行坐标图。以下关于平行坐标图的解释引自百度百科:为了克服传统的笛卡尔直角坐标系...

    平行坐标图简介

        当数据的维度超过三维时,此时数据的可视化就变得不再那么简单。为解决高维数据的可视化问题,我们可以使用平行坐标图。以下关于平行坐标图的解释引自百度百科:为了克服传统的笛卡尔直角坐标系容易耗尽空间、 难以表达三维以上数据的问题, 平行坐标图将高维数据的各个变量用一系列相互平行的坐标轴表示, 变量值对应轴上位置。为了反映变化趋势和各个变量间相互关系,往往将描述不同变量的各点连接成折线。所以平行坐标图的实质是将m维欧式空间的一个点Xi(xi1,xi2,...,xim) 映射到二维平面上的一条曲线。在N条平行的线的背景下,(一般这N条线都竖直且等距),一个在高维空间的点可以被表示为一条拐点在N条平行坐标轴的折线,在第K个坐标轴上的位置就表示这个点在第K个维的值。

    绘制平行坐标图

        本文主要介绍两种利用Python绘制平行坐标图的方法,分别是利用pandas包绘制和利用plotly包绘制(默认已安装pandas包和plotly包)。

    利用pandas实现平行坐标图的绘制

    import matplotlib.pyplot as plt
    import pandas as pd
    import seaborn as sns
    from pandas.plotting import parallel_coordinates
    
    data = sns.load_dataset('iris')
    
    fig,axes = plt.subplots()
    parallel_coordinates(data,'species',ax=axes)
    fig.savefig('parallel.png')

        绘制的平行坐标图如下所示:

        从上图可以看到x轴上变量共用一个y坐标轴,此时因sepal_length、sepal_width、petal_length以及petal_width这四个变量的值得范围相近,利用这种方式作出的共用y轴的平行坐标图有着很好的可视化效果;但假如sepal_length、sepal_width、petal_length以及petal_width这些变量的值的范围相差较大时,这种共用y轴的平行坐标图就不再适用,此时我们需要的是y轴独立的平行坐标图。下面介绍的另一种方法实现的就是y轴独立的平行坐标图。

    利用plotly实现平行坐标图的绘制

        plotly绘图有两种模式,一种是online模式,另一种是offline模式。本文使用的是offline模式,且是在jupyter notebook中进行绘图。

        首先熟悉一下plotly的绘图方式:

    import plotly as py
    import plotly.graph_objs as go
    py.offline.init_notebook_mode(connected=True)   # 初始化设置
    
    py.offline.iplot({
        "data": [go.Parcoords(
            line = dict(color = 'blue'),
            dimensions = list([
                dict(range = [1,5],
                     constraintrange = [1,2],
                     label = 'A', values = [1,4]),
                dict(range = [1.5,5],
                     tickvals = [1.5,3,4.5],
                     label = 'B', values = [3,1.5]),
                dict(range = [1,5],
                     tickvals = [1,2,4,5],
                     label = 'C', values = [2,4],
                     ticktext = ['text 1', 'text 2', 'text 3', 'text 4']),
                dict(range = [1,5],
                     label = 'D', values = [4,2])
            ])
        )],
        "layout": go.Layout(title="My first parallel coordinates")
    })

        绘制图形如下所示: 

    绘制鸢尾花数据的平行坐标图:

    df = sns.load_dataset('iris')
    df['species_id'] = df['species'].map({'setosa':1,'versicolor':2,'virginica':3})  #用于颜色映射
       
    py.offline.iplot({
        "data": [go.Parcoords(
            line = dict(color = df['species_id'],
                       colorscale = [[0,'#D7C16B'],[0.5,'#23D8C3'],[1,'#F3F10F']]),
            dimensions = list([
                dict(range = [2,8],
                    constraintrange = [4,8],
                    label = 'Sepal Length', values = df['sepal_length']),
                dict(range = [1,6],
                    label = 'Sepal Width', values = df['sepal_width']),
                dict(range = [0,8],
                    label = 'Petal Length', values = df['petal_length']),
                dict(range = [0,4],
                    label = 'Petal Width', values = df['petal_width'])
            ])
        )],
        "layout": go.Layout(title='Iris parallel coordinates plot')
    })

        绘制的图形如下所示:

        注:关于plotly.offline.iplot、go.Parcoords以及go.Layout的用法可以利用help关键字查看相关帮助文档,与pyecharts不同,plotly提供的帮助文档非常详细。

     

    参考:

    https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.plotting.parallel_coordinates.html?highlight=parallel_coordinates#pandas.plotting.parallel_coordinates

    https://plot.ly/python/parallel-coordinates-plot/

    https://plot.ly/python/getting-started/#start-plotting-online

    https://baike.baidu.com/item/%E5%B9%B3%E8%A1%8C%E5%9D%90%E6%A0%87%E5%9B%BE/7430642

    展开全文
  • Python实现平行坐标图的两种方式

    万次阅读 2018-05-25 17:32:51
    平行坐标图,一种数据可视化的方式。以多个垂直平行的坐标轴表示多个维度,以维度上的刻度表示在该属性上对应值,相连而得的一个折线表示一个样本,以不同颜色区分类别。 但是很可惜,才疏学浅,没办法在Python里...
  • 为了表示在高维空间的一个点集, 在N条平行的线的背景下,一个在高维空间的点被表示为一条拐点在N条平行坐标轴的折线,在第K个坐标轴上的位置就表示这个点在第K个维的值。 平行坐标是信息可视化的一种重要技术。 ...
  • 数据集是经典的鸢尾花数据集iris,需要使用平行坐标图来进行绘制。 数据展示 考虑使用pyehcrts可以做出可以交互的图片,觉得效果很不错,因此,最终还是选择了pyecharts作为这次的绘图工具。 根据官方的绘制案例,...
  • 嗨,这是我的第一个 GUI,所以我很感激有关最佳实践和错误的反馈。 首先从 pcpnew.m 运行,请阅读 Manual.docx。... 功能: 集群、组、信封、密度、过滤、维度操作和许多显示选项。 干杯,巴尼
  • python可视化图表案例-棒棒糖图与平行坐标图
  • D3.js绘制平行坐标图

    2021-02-01 01:28:15
    原始数据平行坐标图body, html {margin: 0;padding: 0;width: 100%;height: 100%;}/* parcoords */#nutrients {position: fixed;bottom: 4px;height: 180px;width: 98%;padding: 8px 1% 0;border-top: 1px solid #d0...
  • Parallel Nutrients--平行坐标图.rar 下载解压即可运行看到效果
  • 平行坐标图(parallel coordinates plot)是对于具有多个属性问题的一种可视化方法,下图为平行坐标图的基本样式,数据集的一行数据在平行坐标图中用一条折线表示,纵向是属性值,横向是属性类别(用索引表示),如...
  • 散点图和平行坐标图的多任务比较研究 描述 该项目是作为牛津大学计算机科学硕士学位的一部分开发的。 版权所有 (C) 2014 Rassadarie Kanjanabose 更多的信息 如需更多信息,请访问该。
  • 数据可视化之平行坐标图

    万次阅读 2017-02-12 15:22:45
    平行坐标图为一种数据可视化的方式。以多个垂直平行的坐标轴表示多个维度,以维度上的刻度表示具体值,以颜色表示属性,每个样本在各个维度上对应一个值,相连而得的一个折现表示该样本。 下图为实例: D3.JS实例...
  • R和Tableau平行坐标图

    千次阅读 2017-04-30 18:33:00
    R平行坐标图 library(lattice)data(iris)parallelplot( ~ iris[1:4], iris, groups = Species, horizontal.axis = FALSE, scales = list(x = list(rot = 90))) Tableau平行坐标图 转载于:...
  • js实现平行坐标

    2015-01-28 15:50:23
    利用d3技术实现的平行坐标代码类,调用接口可以生成交互的平行坐标效果
  • 利用python语言对高熵合金进行分类并得出不同特征标签的平行坐标图
  • 平行坐标的绘制

    2021-04-24 17:59:24
    原标题:平行坐标的绘制平行坐标(Parallel coordinate plot),也有称轮廓,是一种分析和展示多元数据的常用方法。看似狂拽酷炫,但其原理却很简单。平行坐标这里可以简单理解为将每列数据以散点画在一...
  • 平行坐标图是信息可视化的一种重要技术。为了克服传统的笛卡尔直角坐标系容易耗尽空间、 难以表达三维以上数据的问题, 平行坐标图将高维数据的各个变量用一系列相互平行的坐标轴表示, 变量值对应轴上位置。为了...
  • 学习用echarts画平行坐标

    千次阅读 2020-06-25 19:49:43
    学习画平行坐标 记录学习 数据源的模样: 处理数据: from pyecharts import options as opts from pyecharts.charts import Parallel import pandas as pd #读数据 result=pd.read_csv('D:/iris.csv') #分组,...
  • 交互式平行坐标图允许您交互式地探索复杂的数据集。 例如,交互式平行坐标图可用于讨论具有多个目标的优化问题的不同权衡(帕累托前沿)或了解多个类别之间的相关性的大数据集。 交互式平行坐标具有以下功能: - ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,399
精华内容 16,159
关键字:

平行坐标图