首页 > 其他分享 >从零开始学机器学习——聚类可视化

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

时间:2024-11-18 10:09:20浏览次数:1  
标签:artist df top 从零开始 可视化 聚类 数据 我们

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

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

数据可视化——聚类

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

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

过滤数据

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

!pip install seaborn

import matplotlib.pyplot as plt
import pandas as pd

df = 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 sns

top = 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 技术的奥秘。我热爱技术交流与分享,对开源社区充满热情。同时也是一位腾讯云创作之星、阿里云专家博主、华为云云享专家、掘金优秀作者。

标签:artist,df,top,从零开始,可视化,聚类,数据,我们
From: https://www.cnblogs.com/guoxiaoyu/p/18541007

相关文章

  • R语言数据分析可视化——summarytools包的使用
    R语言中的summarytools包通过提供能够用最少的代码生成数据全面摘要的功能,使数据分析更加简单。summarytools包提供了一种简单的方法来生成数据集的摘要统计信息,包括描述性统计、频率表、交叉表、缺失值、异常值、相关性、线性回归、ANOVA、卡方检验等。本文将介绍如何使用......
  • 层次聚类——以凝聚型层次聚类为例讲解(易懂版)
            层次聚类是一种将数据集逐步划分为层次结构的方法,是一种无监督学习方法最终形成一颗树状图(dendrogram),可以直观地表示不同数据点之间的聚类关系。它是一种无监督学习方法。层次聚类的两种方法凝聚型(自底向上):这是最常见的方法,从每个数据点开始,将它们作为单独......
  • 【视频讲解】Python深度神经网络DNNs-K-Means(K-均值)聚类方法在MNIST等数据可视化对比
    全文链接:https://tecdat.cn/?p=38289原文出处:拓端数据部落公众号分析师:CucuSun近年来,由于诸如自动编码器等深度神经网络(DNN)的高表示能力,深度聚类方法发展迅速。其核心思想是表示学习和聚类可以相互促进:好的表示会带来好的聚类效果,而好的聚类为表示学习提供良好的监督信号。关......
  • 机房动环境监控用各种列表已经淘汰了,现在都是可视化图表展示了
    在信息技术飞速发展的今天,机房作为数据存储、处理和传输的核心场所,其稳定运行至关重要。过去,机房动环境监控主要依赖各种列表形式来呈现数据,但如今,这种方式已经逐渐被淘汰,取而代之的是更加直观、高效的可视化图表展示。一、传统列表式监控的局限性 传统的机房动环境监控采......
  • 基于webGL的可视化大屏很惊艳,动态效果更惊艳
    基于webGL的可视化大屏堪称惊艳之作。它利用先进的技术将数据以生动的形式呈现,无论是复杂的业务数据还是地理信息等,都能清晰展示。其色彩的运用和图形的构造相得益彰,营造出极具视觉冲击力的画面。而动态效果更是将这种惊艳提升到了新高度。数据的流动不再是静态展示,而是像......
  • 从零开始的 LLM: nanoGPT 学习笔记(2/2)
    上篇:从零开始的LLM:nanoGPT学习笔记(1/2)尝试了完整的训练的过程,nanoGPT仓库中还有复现GPT2的代码,可惜对计算资源要求太高(基于OpenWebText数据集,8卡A100,训练4天),不是个人电脑玩的转了,只能跳过这一步,尝试后面的finetuning。finetuning1.训练数据跟pre-train一样......
  • 从零开始学机器学习——了解聚类
    首先给大家介绍一个很好用的学习地址:https://cloudstudio.net/columns聚类是一种无监督学习方法,其基本假设是数据集未经过标记,或者输入数据与预定义的输出之间并不存在直接的对应关系。聚类的主要目标是将具有相似特征的数据点归类到同一组中,这一组通常被称为“簇”。聚类结果的......
  • i-MES生产制造管理系统-可视化看板
    可视化看板最主要的目的是为了将生产状况透明化,让大家能够快速了解当前的生产状况以及进度,通过大数据汇总分析,为管理层做决策提供数据支撑,看板数据必须达到以下基本要求:数据准确--真实反映生产情况数据及时--实时反馈数据,避免决策滞后简单易用--无需复杂培训,简单了解后即......
  • 从零开始的 LLM: nanoGPT 学习笔记(1/2)
    项目地址:nanoGPT作者是OpenAI的元老人物AndrejKarpathy,以非常通俗易懂的方式将LLM的pre-train娓娓道来,YouTube上也有对应的视频:Let'sbuildGPT:fromscratch,incode,spelledout.其中高赞回复是这样的,总结非常精辟:justforfun,droppingonYouTubethebesti......
  • CODESYS可视化标准计算器制作详细案例(一)
    #制作一个在可视化界面可用于标准计算器功能详细案例#前言:在可视化界面或触摸屏上,很少有带计算器功能的脚本程序,当我们在工控现场需要使用计算器时,往往依靠电脑或手机上的计算器,如果把计算器的功能移值到界面上,或者为PLC提供一个计算公式,那么,非常方便的即时使用,也可以将结......