Python 数据可视化学习笔记 之高维数据可视化及其方法

article/2025/10/1 1:09:33

一、高维数据

高维数据泛指高维(multidimensional) 和多变量(multivariate)数据

-- 高维是指数据具有多个独立属性 -- 多变量是指数据具有多个相关属性

高维数据可视化的挑战:
如何呈现单个数据点的各属性的数据值分布,以及比较多个高维数据点之间的属性关系,从而提升高维数据的分类、聚类、关联、异常点检测、属性选择、属性关联分析和属性简化等任务的效率。

 说明:

1.聚类:聚类是一种无监督学习的手段,其目的是使相似数据点分布在同一类中,而不同数据点处于不同类中或者噪声中

2.利用关联分析的方法可以发现联系如关联规则或频繁项集。
关联分析需要处理的关键问题:

  1. 从大型事务数据集中发现模式可能在计算上要付出很高的代价。
  2. 所发现的某些模式可能是假的,因为它们可能是偶然发生的

高维数据可视化方法分类:

方法之间的比较:

当需要把高维数据以一种可视化的形式展现出来是,则需要对高维数据进行一些处理——降维

2.降维

 使用线性或非线性变换把高维数据投影到低高维空间中,去掉冗余属性,同时尽可能地保留高维空间的重要信息和特征

方法分类:

线性方法:主成分分析PCA、多维尺度分析MDS、非矩阵分解NMF,等

非线性方法:等距特征映射ISOMAP、局部线性嵌套LLE,等

2.1主成分分析法(PCA)

详细:(31条消息) 主成分分析(PCA)原理详解_Microstrong-CSDN博客_pca

主成分分析法采用一个线性变换将高维数据变换到一个新的坐标系统中,使得任何数据点投影到第一个坐标(第一主成分)的方差最大,在第二个坐标(第二主成分)的方差为第二大,依次类推。

优点:主成分分析可以减少数据的维数,并保持对方差贡献最大的特征,相当于保留低阶主成分,忽略高阶主成分

特点:一组二维数据,采用主成分分析检测到的前两位综合指标,正好指出数据点的两个主要方向(正交)

作业:使用进行数据集:iris(安德森鸢尾花卉数据集)绘制

iris数据集介绍

iris数据集有150个观测值和5个变量,分别是sepal length、sepal width、petal length、petal width、species,其中species有3个取值:setosa、virginica、versicolor,反正就是鸾尾花的3个不同品种吧,各有50个观测值。具体见下表。

 

import pandas as pd
import numpy as np
from plotnine import*
from sklearn.decomposition import PCA
from sklearn import datasets
iris=datasets.load_iris()
data = PCA(n_components =2).fit_transform(iris.data)  #对数据进行降维处理
target= pd.Categorical.from_codes(iris.target,iris.target_names)
df= pd.DataFrame(dict(pca1=data[:,0],pca2 = data[:,1],target= target))
base_plot=(ggplot(df,aes('pca1','pca2',fill='factor(target)'))+geom_point(alpha=1,size= 3,shape='o',colour='k') +
#绘制透明度为0.2的散点图stat_ellipse ( geom="polygon",level =0.95, alpha=0.2) +
#绘制椭圆标定不同的类型scale_fill_manual(values= ("#00AFBB", "#E7B800", "#FC4E07"),name='group')+theme(axis_title= element_text(size= 15,face= "plain",color= "black"),axis_text= element_text(size= 13,face= "plain" ,color="black"),legend_text = element_text(size= 11,face="plain",color= "black"),figure_size =(5,5),dpi = 100))
print(base_plot)

1.Categorical:categorical 实际上是计算一个列表型数据中的类别数,即不重复项,它返回的是一个CategoricalDtype 类型的对象,相当于在原来数据上附加上类别信息 , 具体的类别可以通过和对应的序号可以通过 codes 和 categories 来查看:

在实际应用中 我们常常是结合他的 codes 属性来一起使用的 , 即
pd.Categorical( list ).codes 这样就可以直接得到原始数据的对应的序号列表,通过这样的处理可以将类别信息转化成数值信息 ,这样就可以应用到模型中去了 另外更加详细的功能参考官网。

其实看到这里 可以发现 Categorical 的功能和 之前在机器学习 数据处理部分提到的 LabelEncoder (https://blog.csdn.net/weixin_38656890/article/details/80849334)
的功能是一样的, 不过 Categorical 是对自己编码 ,而LabelEncoder 是通过通过一个样本 制成标准 然后 对其他样本编码,因而相对的更加灵活。
2.pd.Categorical.from_codes用于类别替换

原来版本是pd.Factor,新版本换成了pd.Categorical.from_codes(),功能都一样;

实例:

pd.Categorical.from_codes(iris.target, iris.target_names)

原来的target是这样的:

array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
现在变成了这样:
[setosa, setosa, setosa, setosa, setosa, ..., virginica, virginica, virginica, virginica, virginica]
Length: 150
Categories (3, object): [setosa, versicolor, virginica]

2.2 t-SNE算法

Manifold Learing是一种非线性降维的手段,可以看作一种生成类似PCA的线性框架,不同的是可以对数据中的非线性结构敏感。虽然存在监督变体,但是典型的流式学习问题是非监督的:它从数据本身学习高维结构,不需要使用既定的分类。 t-SNE是一种工具。

非线性降维算法 基于在邻域图上随机游走的概率分布来找到数据的内部结构 基本思想:若两个数据在高维空间中是相似的,则降维至2维空间时它们应该离得很近(用条件概率来描述两个数据之间的相似性)TSNE的实现总体上并不复杂,麻烦的是其超高的浮点运算和大型矩阵的操控。

t-SNE(t分布随机邻域嵌入)是一种用于探索高维数据的非线性降维算法。通过基于具有多个特征的数据点的相似性识别观察到的簇来在数据中找到模式,将多维数据映射到适合于人类观察的两个或多个维度。本质上是一种降维和可视化技术。使用该算法的最佳方法是将其用于探索性数据分析。

from sklearn.manifold import TSNEiris_embedded = TSNE(n_components=2).fit_transform(iris.iloc[:,:-1])pos = pd.DataFrame(iris_embedded, columns=['X','Y'])
pos['species'] = iris['species']ax = pos[pos['species']=='virginica'].plot(kind='scatter', x='X', y='Y', color='blue', label='virgnica')
pos[pos['species']=='setosa'].plot(kind='scatter', x='X', y='Y', color='green', label='setosa', ax=ax)
pos[pos['species']=='versicolor'].plot(kind='scatter', x='X', y='Y', color='red', label='versicolor', ax=ax)

import pandas as pdimport numpy as npfrom plotnine import *from sklearn import manifold, datasetsdf=pd.read_csv('D:\Tsne_Data.csv')df=df.set_index('id')num_rows_sample=5000df = df.sample(n=num_rows_sample)tsne = manifold.TSNE(n_components=2, init='pca', random_state=501)X_tsne = tsne.fit_transform(df.iloc[:,:-1])df=pd.DataFrame(dict(DistributedY1=X_tsne[:, 0],DistributedY2=X_tsne[:, 1],target=df.iloc[:,-1]))
base_plot=(ggplot(df, aes('DistributedY1','DistributedY2',fill='target')) +geom_point (alpha=1,size=2,shape='o',colour='k', stroke=0.1)+scale_fill_hue(s = 0.99, I= 0.65, h=0.0417,color_space='husl')+xlim(-100,100))
print(base_plot)

1.set_index( ) 将 DataFrame 中的列转化为行索引。

2.sample(序列a,n)

功能:从序列a中随机抽取n个元素,并将n个元素生以list形式返回。

参考:

基于Python的数据可视化:从一维到多维 - 简书 (jianshu.com)

(31条消息) pd.Categorical 的用法_code_new_life的博客-CSDN博客_pd.categorical

pd.Categorical.from_codes()用于类别替换 - 小小喽啰 - 博客园 (cnblogs.com)


http://chatgpt.dhexx.cn/article/VICpXVHL.shtml

相关文章

高维数据可视化示例

高维数据可视化示例 文中代码均在Jupyter Notebook中运行 文中所需两个数据文件在下面给出。 文中数据集下载1 文中数据集下载2 目录 高维数据可视化示例单变量分析多变量分析可视化二维数据可视化三维数据可视化四维数据可视化 5 维数据可视化 6 维数据(6-D&#…

python科学计算库安装

python科学计算相关的库包括numpy,scipy,matplotlib等,但是自己安装比较不容易,倒不是安装过程有多难,而是会出现各种各样的问题,现在做一记录 安装顺序numpy -> scipy - > matplotlib, …

python怎么进行计算_python怎么计算

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 下面是python中的一个函数计算代码:loops=25000000 from math import*a=range(1,loops)def f(x):return 3*cos(x)+4*sin(x)**2%timeit r=(f(x) for x in a)效率…

Python科学计算初探——余弦相似度

SciPy是世界上著名的Python开源科学计算库,建立在Numpy之上。它增加的功能包括数值积分、最优化、统计和一些专用函数。例如线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等等。 安装科学计算包SciPy 由于SciPy库在Windows下使用pip intall安装失败…

【python科学计算发行版】

python科学计算发行版 python是科学计算的有力工具,但在进行计算过程中需要安装很多依赖包,会对使用造成不便,所以总结了一下几个包含丰富科学计算包的python发行版本供参考。 Windows下使用的Winpython著名的计算集合python(x,y)数据科学平…

Python科学计算pdf

下载地址:网盘下载 内容简介 编辑 本书介绍如何用Python开发科学计算的应用程序,除了介绍数值计算之外,还着重介绍如何制作交互式的2D、3D图像,如何设计精巧的程序界面,如何与C语言编写的高速计算程序结合,…

python科学计算的几个例子

python解常微分方程 python解常微分方程的步骤如下: 将计算区间分为n个小段,在每一小段上将求解的曲线作为直线处理;将一个n阶常微分方程转换成[y_n,y_n-1,…,y_i,…,y_0]向量的线性方程组,其中y_i表示y的i阶导数;确…

python科学计算与数据可视化——Matplotlib

Matplotlib(https://matplotlib.org/)是一个用来绘图的python库,它的matplotlib.pyplot模块提供了一个绘图系统。 matplotlib中最重要的函数就plot,它可以绘制二维图像 使用subplot函数,你就可以在同一个图像里绘制多个子图 #1.…

常用的python科学计算库有哪些_python科学计算常用的数学科学计算库有哪些?

1.numpy(高效多维数据表示) NumPy数组可以将许多数据处理任务表述为简洁的数组表达式,否则需要编写循环。用数组表达式代替循环的做法,通常被称为矢量化。通常矢量化数组运算要比等价的纯Python方式快上一两个数量级,尤其是各种数值计算。 假设我们想要在一组值(网格型)上计…

Python 初步了解科学计算和数据分析

推荐自己的专栏:分享一些Python案例,将所学用出来随着Python语言生态环境的完善,众多科学计算和数据分析库(例如NumPy、SciPy、Pandas、Matplotlib、IPython等),使得Python成为科学计算和数据分析的首选语言…

Python科学计算

Python 科学计算 NumPy(MatLab 替代品之一) 数组的算数和逻辑运算傅立叶变换和用于图形操作的例程与线性代数有关的操作。 NumPy 拥有线性代数和随机数生成的内置函数 frmemeta SciPy(科学计算) SciPy是一个开源的算法库和数学工具包。 其包含最优化、线…

深度阐述数据建模及可视化系统技术方案

1.系统概述 数据建模及可视化系统系统是一站式全链路数据生命周期管家,帮助用户管理数据资产并挖掘价值。平台提供多源异构的数据采集模块、实时/离线计算框架,简洁易用的开发环境和平台接口,为政府机构、企业、科研机构、第三方软件服务商等…

数据可视化现状调研

数据可视化现状调研 概述 数据可视(Data visualization)数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息。但是,这并不就意味着,数据可视化就一定因为要实现其功能用途而令人感到枯燥乏味,…

数据可视化课程大纲和教学设计及源代码

一、课程基本信息 二、课程定位 《数据可视化》课程是面向全校学生的一门公共选修课。本课程包括16学时的理论教学和16学时的实践教学,在校内完成。 《数据可视化》课程是一门理论性和实践性都很强的课程。本课程本着“技能培养为主、理论够用为度”的原则&#x…

工业数据可视化

工业大数据是指在工业领域中,围绕典型智能制造模式,从客户需求到销售、订单、计划、研发、设计、工艺、制造、采购、供应、库存、发货和交付、售后服务、运维、报废或回收再制造等整个产品全生命周期各个环节所产生的各类数据及相关技术和应用的总称。其…

数据可视化选择题

第一章 打开可视化大门 多选(3分) 可视化的分类包含: A.科学可视化B.信息可视化C.智能可视化D.可视分析学 ABD ‏2. 以下哪张图片为科学可视化结果: A. B. C. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cynHvYcn…

52个数据可视化图表鉴赏

文章目录 1.弧线图2.面积图3.箭头图4.条形图5.布林线指标6.箱线图7.气泡地图8.子弹图9.凹凸图10.日历图11.烛台图12.卡通图13.弦图14.分级统计图15.组合图表16.连接地图17.控制图18.南丁格尔玫瑰图19.交叉表20.环形图21.漏斗图22.甘特图23.热图24.六边形平铺地图25.直方图26.地…

解构数据可视化

文章目录 什么是数据可视化数据可视化四大过程1. 确定主题2. 提炼数据3. 确认图表4. 可视化设计及布局 可视化映射1. 可视化空间2. 标记3. 视觉通道 什么是数据可视化 数据可视化的目标是透过数据的表象,洞悉其中的规律,指导用户高效、准确地进行决策。 …

数据可视化学习之大屏学习

一 前言 什么是数据可视化大屏?数据可视化大屏是以大屏为主要展示载体的数据可视化设计。可视化大屏就是一种非常有效的数据可视化工具,它可以将业务的关键指标以可视化的方式展示到一个或多个LED屏幕上,不仅使业务人员能够从复杂的业务数据…

数据可视化学习路线

写在前面 有幸看到了这篇关于数据可视化学习的指导文章,由于原作链接访问异常,只得从百度快照中看到原文,所以这里搬运过来,特此声明本文系【转载】,在此感谢原作者,以下为原文正文(略有删减)。 原作者: 张…