【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)

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

相关文章
|
1月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
135 5
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
2月前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
356 55
|
1天前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
22 12
|
2月前
|
存储 缓存 监控
局域网屏幕监控系统中的Python数据结构与算法实现
局域网屏幕监控系统用于实时捕获和监控局域网内多台设备的屏幕内容。本文介绍了一种基于Python双端队列(Deque)实现的滑动窗口数据缓存机制,以处理连续的屏幕帧数据流。通过固定长度的窗口,高效增删数据,确保低延迟显示和存储。该算法适用于数据压缩、异常检测等场景,保证系统在高负载下稳定运行。 本文转载自:https://www.vipshare.com
132 66
|
7天前
|
监控 算法 安全
内网桌面监控软件深度解析:基于 Python 实现的 K-Means 算法研究
内网桌面监控软件通过实时监测员工操作,保障企业信息安全并提升效率。本文深入探讨K-Means聚类算法在该软件中的应用,解析其原理与实现。K-Means通过迭代更新簇中心,将数据划分为K个簇类,适用于行为分析、异常检测、资源优化及安全威胁识别等场景。文中提供了Python代码示例,展示如何实现K-Means算法,并模拟内网监控数据进行聚类分析。
28 10
|
25天前
|
存储 算法 安全
控制局域网上网软件之 Python 字典树算法解析
控制局域网上网软件在现代网络管理中至关重要,用于控制设备的上网行为和访问权限。本文聚焦于字典树(Trie Tree)算法的应用,详细阐述其原理、优势及实现。通过字典树,软件能高效进行关键词匹配和过滤,提升系统性能。文中还提供了Python代码示例,展示了字典树在网址过滤和关键词屏蔽中的具体应用,为局域网的安全和管理提供有力支持。
50 17
|
1天前
|
机器学习/深度学习 算法 搜索推荐
联邦学习的未来:深入剖析FedAvg算法与数据不均衡的解决之道
随着数据隐私和数据安全法规的不断加强,传统的集中式机器学习方法受到越来越多的限制。为了在分布式数据场景中高效训练模型,同时保护用户数据隐私,联邦学习(Federated Learning, FL)应运而生。它允许多个参与方在本地数据上训练模型,并通过共享模型参数而非原始数据,实现协同建模。
|
3月前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
155 67
|
3月前
|
存储 搜索推荐 Python
用 Python 实现快速排序算法。
快速排序的平均时间复杂度为$O(nlogn)$,空间复杂度为$O(logn)$。它在大多数情况下表现良好,但在某些特殊情况下可能会退化为最坏情况,时间复杂度为$O(n^2)$。你可以根据实际需求对代码进行调整和修改,或者尝试使用其他优化策略来提高快速排序的性能
152 61
|
3月前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
141 63

推荐镜像

更多