从零开始学机器学习——聚类可视化

news/2025/1/9 19:13:26/文章来源:https://www.cnblogs.com/guoxiaoyu/p/18541007

首先给大家介绍一个很好用的学习地址:https://cloudstudio.net/columns

在上一章节中,我们对聚类的相关知识进行了全面的介绍,旨在为大家打下坚实的理论基础。今天,我们的主要任务是深入探讨数据可视化的技术和方法。在之前的学习中,我们已经接触过回归分析中的可视化技术,而今天我们将专注于聚类分析的可视化。我们将学习如何使用散点图、同心圆等可视化工具,以更直观地理解聚类结果。

数据可视化——聚类

今天我们的目标是从一个特定的文件中读取和分析数据。该文件包含了大量的歌曲信息,涵盖多个字段,例如歌曲名称、音乐流派、歌唱家、流行度、可舞性、发布时间等。在我们的分析过程中,我们将首先过滤出这份数据中最为突出的三大流派,并提取相关数据。接下来,我们将深入探讨这三大流派在其他字段上的相关性,并分析其数据分布情况。

需要注意的是,本章节并不打算过多讨论聚类算法及其具体作用,我们的重点将放在如何运用可视化工具来展示和理解这些数据。这将有助于我们更直观地捕捉到数据中的趋势和模式,从而为后续的分析打下基础。

过滤数据

首先,我们需要引入一些关键的依赖包:

!pip install seaborn

import matplotlib.pyplot as plt
import pandas as pddf = pd.read_csv("../data/nigerian-songs.csv")
df.head()

接下来,我们将对数据集进行初步查看,以了解其整体结构和内容。

image

使用以下命令,我们可以全面查看数据的大致格式以及数据量等关键信息。

df.info()
df.isnull().sum()
df.describe()

df.info():快速了解数据的结构和列的类型。

df.isnull().sum():识别哪些列存在缺失数据以及缺失的程度。

df.describe():主要用于数值型数据,提供了每列的基本统计特性,便于理解数据的分布情况。

我们可以先查看一下describe方法输出的数据,这部分信息将为我们提供重要的统计结果和数据分布情况。其他相关的内容我们之前已经讨论过,具体情况可以参考附图。

image

数据筛选

接下来,我们将对数据进行筛选,目标是提取出最流行的三大音乐流派。为了实现这一目标,我们将以artist_top_genre作为X轴,以便更清晰地观察数据的分布情况。以下是相应的代码:

import seaborn as snstop = df['artist_top_genre'].value_counts()
plt.figure(figsize=(10,7))
sns.barplot(x=top[:5].index,y=top[:5].values)
plt.xticks(rotation=45)
plt.title('Top genres',color = 'blue')

如图所示,我们提取出了前五个音乐流派,并成功识别出其中的三个:afro dancehall、afropop以及nigerian pop。

image

请注意,由于在检查数据时未发现任何缺失值(即没有null数据),因此我们决定不删除任何行,直接进行绘图。然而,如果你的数据集中存在缺失值,建议你在进行绘图之前,首先删除包含缺失值的行,以确保数据的完整性和图形的准确性。这样可以避免潜在的数据偏差,确保分析结果的可靠性。

df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]
df = df[(df['popularity'] > 0)]
top = df['artist_top_genre'].value_counts()
plt.figure(figsize=(10,7))
sns.barplot(x=top.index,y=top.values)
plt.xticks(rotation=45)
plt.title('Top genres',color = 'blue')

我们的数据筛选工作终于圆满完成。现在,我们已经识别出当前最受欢迎的三大流派,具体信息如图所示。

image

强相关性

同样地,让我们再来查看一下热力图。这一部分内容我们在回归分析中已经详细讲解过,因此在这里我们将直接提供相关的代码。以下是具体的实现代码:

corrmat = df.corr(numeric_only=True)
f, ax = plt.subplots(figsize=(12, 9))
sns.heatmap(corrmat, vmax=.8, square=True)

根据图片所示的数据分析,我们可以清楚地看到,唯一表现出强相关性的变量是能量(energy)与响度(loudness)之间的关系。这一点并不令人惊讶,因为嘈杂的音乐往往伴随着极高的活力和强烈的节奏感。

image

接下来,我们将深入探讨一种新的可视化方法,以帮助我们更好地理解聚类分析中的数据分布情况。

数据分布

同心圆

接下来,我们将根据受欢迎程度和可舞性这两个指标进行数据分析,具体方式包括绘制同心圆和散点图。这些图表将帮助我们更直观地理解数据的分布和趋势。当然,你也可以选择其他字段进行对比分析,完全可以根据个人的喜好和需求进行调整。

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
df.iloc[:, 6:8] = df.iloc[:, 6:8].apply(LabelEncoder().fit_transform)sns.set_theme(style="ticks") 
g = sns.jointplot(data=df,x="popularity", y="danceability", hue="artist_top_genre",kind="kde",
)

由于数据分布和数据类型不一致,为了确保分析的准确性和一致性,我决定将所有数据统一转换为整数格式。如图所示:

image

他的目的是成一个联合分布图,用于展示数据集中流行度(popularity)和舞蹈性(danceability)之间的关系,同时通过不同颜色标识不同的音乐风格(artist_top_genre)

散点图

sns.FacetGrid(df, hue="artist_top_genre").map(plt.scatter, "popularity", "danceability",s=5) .add_legend()

一行代码即可观察其散点分布,如图所示:

image

一般来说,对于聚类分析,使用散点图来展示数据的聚类效果是非常有效的,因此掌握这种可视化技术对我们理解数据的结构和模式至关重要。在接下来的课程中,我们将利用经过过滤后的数据,采用 k-means 聚类算法来探索和识别数据中以有趣方式重叠的组。

总结

在本章节中,我们深入探讨了数据可视化在聚类分析中的应用。通过对歌曲信息数据集的分析,我们成功识别了三大流派,并运用散点图和同心圆等可视化工具,直观地展示了数据的分布与趋势。可视化不仅增强了我们对数据的理解,还为后续的聚类分析打下了坚实的基础。

通过这种方式,我们不仅能识别出数据中的模式,还能为决策提供有力支持。正如我们所见,数据的可视化过程是一个探索性的旅程,它帮助我们在复杂的数据中找到隐藏的联系和意义。接下来,我们将应用 k-means 聚类算法,进一步挖掘这些数据背后的故事。


我是努力的小雨,一名 Java 服务端码农,潜心研究着 AI 技术的奥秘。我热爱技术交流与分享,对开源社区充满热情。同时也是一位腾讯云创作之星、阿里云专家博主、华为云云享专家、掘金优秀作者。

💡 我将不吝分享我在技术道路上的个人探索与经验,希望能为你的学习与成长带来一些启发与帮助。

🌟 欢迎关注努力的小雨!🌟

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/836040.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JMeter中使用嵌套变量方法

JMeter中使用嵌套变量方法 在使用JMeter进行接口测试时,经常遇到需要动态生成变量名并引用其值的情况。在JMeter中,嵌套变量的使用可以帮助我们实现这一目标。本文将详细介绍如何在JMeter中使用嵌套变量的方法。 一、嵌套变量的基本概念 在JMeter中,变量通常通过${}语法进行…

京准电钟:GPS北斗卫星时间同步系统的应用

京准电钟:GPS北斗卫星时间同步系统的应用京准电钟:GPS北斗卫星时间同步系统的应用 京准电钟:GPS北斗卫星时间同步系统的应用 京准电子官微——ahjzsz 【摘要】本文介绍了电力系统目前所采用的时间同步方案技术的局限性以及存在的问题。在此基础上,提出了使用在标准以太网中…

react项目中使用threejs加载glb文件

安装threejs yarn add three首先创建 renderModel.js文件 import * as THREE from three import { GLTFLoader } from three/examples/jsm/loaders/GLTFLoader.js import { DRACOLoader } from three/examples/jsm/loaders/DRACOLoader.js import { OrbitControls } from three…

网络性能评估工具Iperf详解

摘自:https://www.cnblogs.com/machangwei-8/p/16922788.html 参考:https://www.51cto.com/article/454889.html发端:iperf -u -c <收端IP> -i 1 -b 800m -t 999 -l 1400 收端:iperf -u -s -i 1 目录一、网络性能评估工具Iperf1、Iperf能做什么二、Iperf的安装与使用…

提升开发效率的秘密:IT团队都在用哪些项目管理工具?

在当今的数字化时代,IT团队的角色已经从传统的技术支持转变为企业发展的战略推动力。随着企业业务的快速扩展,IT项目的复杂性也在增加。如何高效地管理项目、协调团队协作、以及快速响应变化,成为每个IT团队都必须面对的问题。而一个优秀的项目管理工具,不仅能帮助团队提升…

【PCIE716-0】基于PCIe总线架构的XC7Z100 FPGA高性能实时信号处理平台

板卡概述 PCIE716-0是一款基于PCIe总线架构的XC7Z100 FPGA高性能实时信号处理平台。该平台采用Xilinx的ZYNQ SOC系列产品XC7Z100作为主处理器。 该平台的PL端具有1个FMC(HPC)接口,1路PCIe x8主机接口,支持1路UART串口、支持1组64位DDR3 SDRAM大容量缓存、支持1路1000BASE-T…

给网站免费升级https协议

给网站免费升级HTTPS协议,可以通过申请并部署免费的SSL证书来实现。以下是一个详细的步骤指南:一、申请免费SSL证书 选择证书颁发机构: 可以选择像JoySSL这样的公益项目,它提供免费、自动化的SSL/TLS证书颁发服务,适用于各种规模的网站。 免费SSL证书申请入口 提交申请: …

在阿里云快速启动Appsmith搭建前端页面

什么是Appsmith Appsmith是一个开源的低代码开发平台,它使得开发者能够快速地构建内部工具、业务管理系统、CRM系统等。Appsmith通过提供一系列预建的UI组件(如表格、图表、表单等),以及对数据库、API调用的直接支持,简化了开发过程。开发者可以使用这些组件和服务来构建复…

【Anaconda3 2023.03软件下载与安装教程】

1、安装包 Anaconda3py 2023(64bit): 链接:https://pan.quark.cn/s/f77de1704504 提取码:z7k2 2、安装教程 1) 下载解压软件安装包,双击Setup.exe安装,弹窗安装对话框2) 点击Next3) 点击I Agree4) 默认,点击Next5) 选择安装目录,建议…

MoD:轻量化、高效、强大的新型卷积结构 | ACCV24

来源:晓飞的算法工程笔记 公众号,转载请注明出处论文: CNN Mixture-of-Depths论文地址:https://arxiv.org/abs/2409.17016创新点提出新的卷积轻量化结构MoD,在卷积块(Conv-Blocks)内通过动态选择特征图中的关键通道进行集中处理,提高效率。 CNN MoD保留了静态计算图,这…

【Android Studio 2022软件下载与安装教程】

1、安装包 Android Studio 2022: 链接:https://pan.quark.cn/s/9821141ab2c7 提取码:aTaw 2、安装教程 1) 解压下载安装包,双击Setup.exe安装,弹窗安装对话框2) 点击下一步3) 默认,点击下一步4) 选择安装目录,建议选择C盘之外,点击下一步5)…

当然不是草台班子-冲刺日志6

作业所属课程 软件工程2024作业要求 2024秋软工实践团队作业-第三次( Alpha冲刺)作业目标 alpha冲刺完成项目核心功能团队名称 当然不是草台班子团队成员学号 姓名102201427 侯丽珂102201426 郑嘉祺102201241 戴康怡102201218 肖晗涵112200328 谢李东292300304 陈鹭102201242…