【Python数据挖掘】数据可视化及数据对象的相似性度量算法详解(超详细 附源码)

简介: 【Python数据挖掘】数据可视化及数据对象的相似性度量算法详解(超详细 附源码)

需要PPT和源码请点赞关注收藏后评论区留言私信~~~

一、数据可视化

数据可视化(Data Visualization)通过图形清晰有效地表达数据。它将数据所包含的信息的综合体,包括属性和变量,抽象化为一些图表形式。

数据可视化方法包括:

基于像素的技术

几何投影技术

基于图符的技术和基于图形的技术

几何投影技术帮助发现多维数据集的有趣投影。

难点:在二维显示上可视化高维空间

1:基于像素的技术

m维的数据集,创建m个窗口 一条记录 m 维的值对应 m 个像素在相应的窗口中 像素颜色反映了数据值

2:几何投影可视化技术

几何投影技术可以帮助用户发现多维数据集的有趣投影。几何投影技术的难点在于在二维显示上可视化高维空间。散点图使用笛卡尔坐标显示二维数据点。使用不同颜色或形状表示不同的数据点,可以增加第三维。

import matplotlib.pyplot as plt
import numpy as np
n = 50
# 随机产生50个0~2之间的x,y坐标
x = np.random.rand(n)*2
y = np.random.rand(n)*2
colors = np.random.rand(n) 
# 随机产生50个0~1之间的颜色值
area = np.pi * (10 * np.random.rand(n))**2 
# 点的半径范围:0~10
plt.scatter(x, y, s=area, c=colors, alpha=0.5, marker=(9, 3, 30))
plt.show()

 

随着维度的增加 散点图矩阵变得不太有效,平行坐标图是对于具有多个属性问题的一种可视化方法,在平行坐标图中,数据集的一行数据在平行坐标图中用一条折现表示,纵向是属性值,横向是属性类别

from pyecharts.charts import Parallel
import pyecharts.options as opts
import seaborn as sns
import numpy as np
data = sns.load_dataset('iris')
data_1 = np.array(data[['sepal_length', 'sepal_width', 'petal_length', 'petal_width']]).tolist()
parallel_axis = [
    {"dim": 0, "name": "萼片长度"},
    {"dim": 1, "name": "萼片宽度"},
    {"dim": 2, "name": "花瓣长度"},
    {"dim": 3, "name": "花瓣宽度"},
]
parallel = Parallel(init_opts=opts.InitOpts(width="600px", height="400px"))
parallel.add_schema(schema=parallel_axis)
# parallel.config(schema)
parallel.add('iris平行图',data=data_1,linestyle_opts=opts.LineStyleOpts(width=4, opacity=0.5))
parallel.render_notebook()

3:基于图符的可视化技术

基于图符的(Icon-based)可视化技术使用少量图符表示多维数据值。有两种流行的基于图符的技术,即切尔诺夫脸和人物线条图。

切尔诺夫脸如下

把多达18个变量(维)的多维数据以卡通人脸显示

人物线条图如下

把多维数据映射到5-段任务线条图,其中每个都画有四肢和一个躯体,两个维被映射到x和y,其余的映射到四肢角度或长度。

4:层次可视化技术

对于大型高维数据集很难实现可视化技术。层次可视化把大型的高维数据的所有维划分成子集(子空间),这些子空间按层次可视化。

5:可视化复杂对象和关系

早期的可视化技术主要用于分析数值数据,然而现在出现了越来越多的非数值数据,比如文本和社会网络数据,因此可视化这些非数值数据引起了更多广泛的关注。标签云是一种用户产生的标签统计量的可视化。在标签云中,标签通常按字母次序或用户指定的次序列举。

6:高维数据可视化

高维数据可视化主要分为降维方法和非降维方法

1. 降维方法

降维方法将高维数据投影到低维空间,尽量保留高维空间中原有的特性和聚类关系。常见的降维方法有主成分分析、多维度分析(Multi-Dimensional Scaling, MDS)和自组织图(Self-Organization Map, SOM)等。

常用的数据降维方法如下

2. 非降维方法

非降维方法保留了高维数据在每个维度上的信息,可以展示所有的维度。各种非降维方法的主要区别在于如何对不同的维度进行数据到图像属性的映射。

Python可视化

在Python中,使用最多的数据可视化工具是Matplotlib,除此之外还有很多其他可选的可视化工具包,主要包括以下几类。

(1)Matplotlib以及基于Matplotlib开发的工具包:Pandas中的封装Matplotlib API的画图功能,Seaborn和networkx等;

(2)基于JavaScript和d3.js开发的可视化工具,如plotly等,这类工具可以显示动态图且具有一定的交互性;

(3)其他提供了Python调用接口的可视化工具,如OpenGL,GraphViz等,这一类工具各有特点且在特定领域应用广泛。

下面是词云绘制图实例

代码如下

from pyecharts import options as opts
from pyecharts.charts import Page, WordCloud
from pyecharts.globals import SymbolType
words = [
    ("牛肉面", 7800),("黄河", 6181),
    ("《读者》杂志", 4386), ("甜胚子", 3055),
    ("甘肃省博物馆", 2055),("莫高窟", 8067),("兰州大学", 4244),
    ("西北师范大学", 1868),("中山桥", 3484),
    ("月牙泉", 1112),("五泉山", 980),
    ("五彩丹霞", 865),("黄河母亲", 847),("崆峒山",678),
    ("羊皮筏子", 1582),("兴隆山",868),
    ("兰州交通大学", 1555),("白塔山", 2550),("五泉山", 2550)]
c = WordCloud()
c.add("", words, word_size_range=[20, 80])
c.set_global_opts(title_opts=opts.TitleOpts(title="WordCloud-基本示例"))
c.render_notebook()

使用regplot函数绘制回归图

代码如下

import seaborn as sns
df_iris = sns.load_dataset('iris')
df_iris.head()
# sns.barplot(x = df_iris['species'],y=df_iris['petal_length'],data=df_iris)
sns.regplot(x = 'petal_length',y = 'petal_width' ,data = df_iris)

二、数据对象的相似性度量

现实中,我们需要处理的数据具有着不同的形式和特征。而对数据相似性的度量又是数据挖掘分析中非常重要的环节

数据矩阵与相异性矩阵

标称属性的相似性度量

其中 m为匹配的数目 即对象i和j状态相同的属性数  p为对象的属性总数

二元属性的相似性度量

二元属性只有两个状态,通常表示为true或者false 在计算两个属性间的相异性时,涉及由给定的二元数据计算相异性矩阵

对于非对称二元属性,只关心“正匹配”的情况,也就是只关心两个对象属性中,都是1的情况,因此负匹配数t被认为是不重要的,可以忽略,如式3.9所示。

由数据可以看出 对象的二元属性是堆成的,因此根据上述可以计算得到三个人的相异性分别是

0.67 0.67 0.67

数值属性的相似性度量

(1)欧氏距离

(2)曼哈顿距离

(3)切比雪夫距离

(4)闵可夫斯基距离

(5)汉明距离(Hamming Distance)

两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要做的最小替换次数。

序数属性的相似性度量

序数属性的每个属性值都代表了一种次序,所以,无论使用数字还是文字性的叙述,都可以表示成数字的形式。

混合类型属性的相似性

以上几种情况都是针对数据库中单一类型的数据,但是很多时候,遇到的一组数据可能拥有多种类型的属性,也就是混合类型属性。

余弦相似性

针对文档数据的相似度测量一般使用余弦相似性。在处理文档的时候,一般采用文档所拥有的关键词来刻画一个文档的特征。

距离相似度的测试代码如下

import numpy as np
from scipy.spatial.distance import pdist
x=(0.7,0.9,0.2,0.3,0.8,0.4,0.6,0,0.5)
y=(0.6,0.8,0.5,0.4,0.3,0.5,0.7,0.2,0.6)
X=np.vstack([x,y])
d1= pdist(X, 'euclidean')
print('欧式距离:',d1)
d2=pdist(X,'cityblock')
print('曼哈顿距离:',d2)
d3=pdist(X,'chebyshev')
print('切比雪夫距离:',d3)
d4=pdist(X,'minkowski',p=2)
print('闵可夫斯基距离:',d4)
d5=pdist(X,'cosine')
print('余弦相似性:',1-d5)

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
20天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:智能数据隐私保护
使用Python实现深度学习模型:智能数据隐私保护 【10月更文挑战第3天】
64 0
|
8天前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
18天前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
37 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
18天前
|
计算机视觉 Python
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
这篇文章介绍了如何使用Python的OpenCV库将多张图片合并为一张图片显示,以及如何使用matplotlib库从不同txt文档中读取数据并绘制多条折线图。
37 3
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
|
19天前
|
数据可视化 算法 Python
基于OpenFOAM和Python的流场动态模态分解:从数据提取到POD-DMD分析
本文介绍了如何利用Python脚本结合动态模态分解(DMD)技术,分析从OpenFOAM模拟中提取的二维切片数据,以深入理解流体动力学现象。通过PyVista库处理VTK格式的模拟数据,进行POD和DMD分析,揭示流场中的主要能量结构及动态特征。此方法为研究复杂流动系统提供了有力工具。
48 2
基于OpenFOAM和Python的流场动态模态分解:从数据提取到POD-DMD分析
|
6天前
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
21 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
|
15天前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
36 2
|
16天前
|
JSON 安全 数据安全/隐私保护
深度剖析:Python如何运用OAuth与JWT,为数据加上双保险🔐
【10月更文挑战第10天】本文介绍了OAuth 2.0和JSON Web Tokens (JWT) 两种现代Web应用中最流行的认证机制。通过使用Flask-OAuthlib和PyJWT库,详细展示了如何在Python环境中实现这两种认证方式,从而提升系统的安全性和开发效率。OAuth 2.0适用于授权过程,JWT则简化了认证流程,确保每次请求的安全性。结合两者,可以构建出既安全又高效的认证体系。
34 1
|
24天前
|
JSON 安全 数据安全/隐私保护
深度剖析:Python如何运用OAuth与JWT,为数据加上双保险🔐
【10月更文挑战第2天】当讨论Web应用安全时,认证与授权至关重要。OAuth 2.0 和 JSON Web Tokens (JWT) 是现代Web应用中最流行的两种认证机制。OAuth 2.0 是一种开放标准授权协议,允许资源拥有者授予客户端访问资源的权限,而不需直接暴露凭据。JWT 则是一种紧凑、URL 安全的信息传输方式,自我包含认证信息,无需服务器查询数据库验证用户身份。在 Python 中,Flask-OAuthlib 和 PyJWT 分别用于实现 OAuth 2.0 和 JWT 的功能。结合两者可构建高效且安全的认证体系,提高安全性并简化交互过程,为数据安全提供双重保障。
21 7
|
23天前
|
数据采集 存储 监控
如何使用 Python 爬取商品数据
如何使用 Python 爬取京东商品数据
29 3

热门文章

最新文章