机器学习04-数据理解之数据可视化-(基于Pima数据集)

news2024/12/28 4:25:24

什么是数据可视化?

数据可视化是指通过图表、图形、地图等视觉元素将数据呈现出来的过程。它是将抽象的、复杂的数据转化为直观、易于理解的视觉表达的一种方法。数据可视化的目的是帮助人们更好地理解数据,从中发现模式、趋势、关联和异常,从而作出更明智的决策。

数据可视化在各个领域都有广泛的应用,包括商业、科学、工程、医疗、社会科学等。通过可视化数据,我们可以更好地探索数据之间的关系,展示数据的变化趋势,发现数据的异常值,并从中得出洞察和结论。

常见的数据可视化形式包括:

  1. 折线图和曲线图:用于显示随时间或其他连续变量的趋势和变化。

  2. 条形图和柱状图:用于比较不同类别或组之间的数据。

  3. 饼图和环形图:用于显示组成部分的相对比例。 散点图:用于展示两个变量之间的关系和分布。

  4. 热力图:用于显示数据在二维空间上的密度和分布情况。

  5. 地图可视化:将数据以地理位置为基础展示在地图上,用于显示地理分布和空间相关性。

  6. 仪表盘:集成多种图表和指标,用于提供全面的数据概览。

数据可视化不仅使数据更易于理解和交流,而且有助于发现隐藏在数据中的模式和见解,从而对业务和决策产生积极的影响。然而,数据可视化也需要注意设计和解释,以确保传达的信息准确、清晰且不误导。

直方图

直方图是一种常见的数据可视化图表,用于显示连续变量的分布情况。它将数据划分为若干个等距的区间(称为“箱子”或“柱”),并计算每个区间内数据点的频数(或频率),然后将这些频数用柱状图表示。

直方图的横轴表示连续变量的取值范围,纵轴表示频数(或频率,即频数与总样本数之比)。每个柱子的宽度表示区间的范围,柱子的高度表示该区间内数据点的数量或频率。

直方图的主要用途

是展示数据的分布情况,帮助我们理解数据集中值的范围、数据点的密度和分布模式。通过直方图,我们可以快速获得以下信息:

  1. 数据的中心趋势:通过直方图的峰值可以了解数据的主要集中区域。
  2. 数据的离散程度:直方图的宽度和峰值陡峭程度可以显示数据的分散程度。
  3. 数据的异常值:通过观察直方图的尾部可以发现异常值或离群点。
  4. 数据的分布形态:直方图的形状可以显示数据的分布模式,如正态分布、偏态等。

绘制直方图的步骤包括:

  1. 确定数据集的范围和区间数量。
  2. 将数据划分到对应的区间,并计算每个区间内数据点的频数或频率
  3. 绘制柱状图,横轴表示区间,纵轴表示频数或频率。
  4. 可选地添加标题、标签和图例等,以增加图表的可读性和易理解性。

直方图是一种简单而强大的数据可视化工具,适用于各种类型的数据,尤其是连续变量的分布展示和对比分析。

废话不多说,下面用Python中的matplotlib库来实现 直方图

import matplotlib.pyplot as plt

# 示例数据:学生考试成绩
exam_scores = [65, 78, 89, 92, 77, 82, 90, 88, 95, 72, 85, 78, 84, 79, 87, 91, 70, 94, 83, 76]

# 设置直方图的间隔(bin)
bin_width = 5

# 绘制直方图
plt.hist(exam_scores, bins=range(min(exam_scores), max(exam_scores) + bin_width, bin_width), edgecolor='black')

# 添加标题和标签
plt.title('Exam Scores Histogram')
plt.xlabel('Scores')
plt.ylabel('Frequency')

# 显示图表
plt.show()

运行结果:

在这里插入图片描述

在这个示例中,我们将成绩数据exam_scores分成了5 分为一组的间隔,然后通过plt.hist()函数绘制了直方图。横轴表示成绩区间,纵轴表示在每个区间内的学生数量(频数)。

从这个图中我们很快得就知道65 到70 之间分数得同学 就一个,70 到75 得成绩得学生有2 个, 为了对这个图表得理解 我们可以手动得修改数据去看看图表得变化,比如 往数组中 加个67 再来看看图标得变化

# 示例数据:学生考试成绩
exam_scores = [65,67,78, 89, 92, 77, 82, 90, 88, 95, 72, 85, 78, 84, 79, 87, 91, 70, 94, 83, 76]

再次运行得图表

在这里插入图片描述
很明显,新图标中 65到70 得区间得数据 增加到2 了,

经过上面 得操作后 我们对直方图的概念以及应用有了一定的理解和实操,接下来 我们就对pima 这个数据集来进行实操,看看效果

代码如下:

import pandas as pd
from matplotlib import pyplot as plt


#数据预处理
path = 'D:\down\\archive\\diabetes.csv'
data = pd.read_csv(path)

data.hist()

plt.show()

运行效果如下:

在这里插入图片描述
从这个图我们先不看数据,看坐标就发现横坐标与字段描述 位置冲突了

解决方案

plt.tight_layout()

新代码:

import pandas as pd
from matplotlib import pyplot as plt


#数据预处理
path = 'D:\down\\archive\\diabetes.csv'
data = pd.read_csv(path)

data.hist()
#设置布局自适应
plt.tight_layout()
plt.show()

运行效果:
在这里插入图片描述
这样显示正常了,我们看到有9个直方图,分别对应数据集中 9列数据的直方图
从 Outcome 这个直方图中我们很容易的可以看出1得糖尿病得人大概是200 多,不会得得是400 以上.因为就两个区间值比较明显,就2个值,可以再分析下age 这个图,从这个图中我们也可以单独得获取这个年龄得图,代码如下:

import pandas as pd
from matplotlib import pyplot as plt
from pandas import set_option

#数据预处理
path = 'D:\down\\archive\\diabetes.csv'
data = pd.read_csv(path)

# 设置直方图的间隔(bin)
bin_width = 5
glucose_values = data['Age']


# 绘制直方图
plt.hist(glucose_values, bins=range(min(glucose_values), max(glucose_values) + bin_width, bin_width), edgecolor='black')


plt.tight_layout()
plt.show()

运行结果:

在这里插入图片描述

密度图

密度图(Density Plot)是一种用于可视化数据分布的图表,它类似于直方图,但使用连续的曲线来表示数据的分布。密度图通过估计数据的概率密度函数,反映了数据在整个取值范围内的分布情况。密度图可以帮助我们更直观地了解数据的概率密度和分布特征。

在绘制密度图之前,我们需要对数据进行核密度估计(Kernel Density Estimation,KDE)。核密度估计是一种非参数方法,它通过在每个数据点周围放置核(通常是高斯核)来估计数据的概率密度函数。

在Python中,你可以使用seaborn或matplotlib库来绘制密度图。

示例代码:

import pandas as pd
from matplotlib import pyplot as plt


#数据预处理
path = 'D:\down\\archive\\diabetes.csv'
data = pd.read_csv(path)

data.plot(kind='density', subplots=True, layout=(3, 3), sharex=False)
# 设置布局自适应
plt.tight_layout()
plt.suptitle('Density Plot');
plt.show()

运行结果图示:
在这里插入图片描述
这段代码参数得含义

data.plot(kind='density', subplots=True, layout=(3, 3), sharex=False)

kind:该参数指定要创建的图表类型。在这里,我们设置为kind=‘density’,表示要创建每个列的密度图。

subplots:当设置为True时,该参数将为DataFrame中的每个列创建独立的子图。每个子图将表示一个列的密度图。在代码中,我们设置subplots=True来创建子图。

layout:该参数以元组(行数, 列数)的形式指定子图的布局。在代码中,我们设置layout=(3, 3),表示创建一个3行3列的网格布局,也就是共有3行和3列的子图。

sharex:当设置为False时,该参数确保每个子图都有自己的x轴范围。如果设置为True,所有子图将共享相同的x轴范围。在代码中,我们使用sharex=False,以便每个子图有独立的x轴范围。

plt.suptitle('Density Plot');

title:通过suptitle()函数在整个图表顶部添加一个总标题。在代码中,我们使用plt.suptitle(‘每个列的密度图’, y=1.02)添加一个总标题。

综上所述,这段代码创建了一个3x3的网格布局,其中每个子图代表DataFrame data 中的一个列的密度图。subplots=True 确保每个列都有自己的子图,layout=(3, 3)定义了子图的排列方式。sharex=False确保每个子图有自己的x轴范围,suptitle()函数添加了一个总标题在整个图表的顶部。

当然也可以对单个数据进行密度图分析,自己动手来试试!

箱线图

箱线图(Box
Plot),也称为盒须图或盒式图,是一种用于可视化数据分布和识别异常值的图表。它展示了数据的中位数、上下四分位数、最小值、最大值和可能的异常值。

箱线图的构成要素包括:

箱体(Box):在图表的中间部分,表示数据的上下四分位数(Q1和Q3)。箱体的长度是数据的四分位距(IQR = Q3 - Q1),箱体内部的线表示数据的中位数(或者称为Q2)。

须(Whiskers):从箱体延伸出来的线段,通常表示数据的范围。标准的箱线图会将须延伸至最小值和最大值,但也可以根据需要使用其他规则。

异常值(Outliers):超出须的范围的数据点,通常是异常值。

箱线图可以帮助我们快速了解数据的分布情况,以及数据中是否存在异常值或离群点。

在Python中,你可以使用seaborn或matplotlib库绘制箱线图。以下是使用seaborn库的示例代码:

import seaborn as sns
import matplotlib.pyplot as plt

# 示例数据:假设这是"Glucose"(血糖)的数据
glucose_values = [300,148, 85, 183, 80, 137, 116, 78, 115, 197, 125, 110, 168, 139, 189]

# 使用seaborn绘制箱线图
sns.boxplot(x=glucose_values)

# 添加标题和标签
plt.title('Glucose Box Plot')
plt.xlabel('Glucose')
plt.ylabel('YGlucose')

# 显示图表
plt.show()

运行效果:
在这里插入图片描述
看图中得300 就是异常点或者可以说是数据得突出点.

基于Pima 数据集得箱线图

import pandas as pd
from matplotlib import pyplot as plt


#数据预处理
path = 'D:\down\\archive\\diabetes.csv'
data = pd.read_csv(path)

data.plot(kind='box', subplots=True, layout=(3, 3), sharex=False,)

plt.suptitle('Density Plot');
# 设置布局自适应
plt.tight_layout()
plt.show()

运行结果:

在这里插入图片描述
这里就简单介绍这几种吧,类似得图表还有很多,要熟悉图表 不能光看,动手实验看懂 对看懂各个图表 会事半功倍!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

案例|会展大数据服务系统 智能服务体系建设实践

根据相关的市场调查发现在国内进行的2000多个会展项目中,仅有15%的项目能够提供相关主题网站基本业务和服务,且提供的服务并不能够满足会展各方的应用,剩余的大部门会展项目信息系统构建的不够完善、技术性差、应用复杂等,甚至提供…

python_在K线找出波段_02_找出波段

承接 【python_在K线找出波段_01_找出所有转折点】博文 地址:python_在K线找出波段_01_找出所有转折点_程序猿与金融与科技的博客-CSDN博客 目录 写在前面: 寻找波段的逻辑: 寻找方法 判断高低点连线是否有效 判断方法: 判断点相对连…

画图干货!14种uml图类型及示例

1. 什么是 UML UML 是统一建模语言的缩写。UML 图是基于 UML(统一建模语言)的图表,目的是直观地表示系统及其主要参与者、角色、动作、工件或类,以便更好地理解、更改、维护或记录信息关于系统。简而言之,UML 是一种…

项目经理必备-项目总体计划模板-制式文件,可直接填写使用-公司可用

合同中完整项目名称,黑体,28号字, 居中对齐,项目名称较长时换行填写 当前文档名称,黑体,小初, 居中对齐,文档名称较长时 换行填写 版 本 号 x.x 编制人 日期 20xx年xx月xx日…

【css】css实现一个简单的按钮

四种链接状态分别是&#xff1a; a:link - 正常的&#xff0c;未访问的链接a:visited - 用户访问过的链接a:hover - 用户将鼠标悬停在链接上时a:active - 链接被点击时 <style> a:link, a:visited {//未访问、访问过background-color: #07c160;//设置背景颜色color: wh…

吉客云·奇门对接打通金蝶云星空销售单查询接口与销售出库新增接口

吉客云奇门对接打通金蝶云星空销售单查询接口与销售出库新增接口 对接系统&#xff1a;吉客云奇门 “吉客云”是一站式企业数字化解决方案系统&#xff0c;可实现业务、财务、办公、人事等一体化管理。相对于传统多套软件系统的集成方案&#xff0c;“吉客云”具有业务流程更流…

Vue3描述列表(Descriptions)

&#x1f601; 整体功能效果与 ant design vue 保持高度一致 &#x1f601; 包含两种组件&#xff1a;Descriptions 和 DescriptionsItem&#xff08;必须搭配使用&#xff01;&#xff09; APIs Descriptions 参数说明类型默认值必传title描述列表的标题&#xff0c;显示在…

Dos 命令简介

DOS 简介 DOS是Disk Operating System的缩写&#xff0c;即“磁盘操作系统”。DOS主要是一种面向磁盘的系统软件&#xff0c;有了DOS&#xff0c;我们就可以更容易理解怎么给机器下命令&#xff0c;不必去深入了解机器的硬件结构&#xff0c;也不必去死记硬背那些枯燥2进制数字…

图论-简明导读

计算机图论是计算机科学中的一个重要分支&#xff0c;它主要研究图的性质和结构&#xff0c;以及如何在计算机上有效地存储、处理和操作这些图。本文将总结计算机图论的核心知识点。 一、基本概念 计算机图论中的基本概念包括图、节点、边等。图是由节点和边构成的数据结构&am…

二叉树进阶版(C)

文章目录 1.树1.1概念1.2相关定义1.3 表示&#xff08;左孩子右兄弟&#xff09; 2.二叉树2.1概念2.2特殊的二叉树1. 满二叉树&#xff1a;2. 完全二叉树&#xff1a; 2.3二叉树的性质2.4练习 3.二叉树的存储结构1. 顺序存储2. 链式存储 4.完全二叉树的代码实现4.1堆的介绍1.堆…

静态路由下一跳地址怎么确定(基本静态路由配置实验步骤)

什么是静态路由&#xff1f;静态路由是路由的一种方式&#xff0c;路由项由手动配置&#xff0c;而非动态决定。与动态路由不同&#xff0c;静态路由是固定的&#xff0c;不会改变&#xff0c;即使网络状况已经改变或是重新被组态。一般来说&#xff0c;静态路由是由网络管理员…

MySQL做分布式锁

分布式锁mysql实现方式 方式1&#xff1a;唯一索引 创建锁表&#xff0c;内部存在字段表示资源名及资源描述&#xff0c;同一资源名使用数据库唯一性限制。多个进程同时往数据库锁表中写入对某个资源的占有记录&#xff0c;当某个进程成功写入时则表示其获取锁成功其他进程由于…

iOS——Block two

Block 的实质究竟是什么呢&#xff1f;类型&#xff1f;变量&#xff1f;还是什么黑科技&#xff1f; Blocks 是 带有局部变量的匿名函数 Blocks 由 OC 转 C 源码方法 在项目中添加 blocks.m 文件&#xff0c;并写好 block 的相关代码。打开「终端」&#xff0c;执行 cd XX…

Windows 使用 Linux 子系统,轻轻松松安装多个linux

Windows Subsystem for Linux WSL 简称WSL,是一个在Windows 10\11上能够运行原生Linux二进制可执行文件&#xff08;ELF格式&#xff09;的兼容层。它是由微软与Canonical公司合作开发&#xff0c;其目标是使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机&#…

【计算机网络】NAT及Bridge介绍

OSI七层模型 七层模型介绍及举例 为通过网络将人类可读信息通过网络从一台设备传输到另一台设备&#xff0c;必须在发送设备沿 OSI 模型的七层结构向下传输数据&#xff0c;然后在接收端沿七层结构向上传输数据。 数据在 OSI 模型中如何流动 库珀先生想给帕尔梅女士发一封电…

Vue + el-upload阿里云文件上传进度条功能,阿里云文件上传切片进度条功能实现,el-upload文件上传真实进度条

el-upload阿里云文件上传进度条功能&#xff0c;进度条切片功能&#xff0c;做一个记录&#xff0c;此功能查询过其他文档&#xff0c;最终都还是实现不了&#xff08;这是真实进度条&#xff0c;就是根据文件上传过程中文件切片实现的&#xff09; 效果&#xff1a; <t…

电脑黑屏按什么键恢复?掌握这3个按键,轻松解决!

“电脑怎么会突然就黑屏呢&#xff1f;我看综艺看得好好的莫名其妙电脑就黑屏了&#xff0c;怎么按都没有用。电脑黑屏应该怎么解决呢&#xff1f;大佬快帮帮我&#xff01;” 对于电脑黑屏的问题&#xff0c;很多小伙伴应该都不陌生吧。在实际使用电脑的操作中&#xff0c;或许…

干货 | 三款民宿App会员评测,你都用过吗?

为了留存用户&#xff0c;许多旅游住宿类APP都开通了会员权益&#xff0c;对老用户来说&#xff0c;会员等级的提升会为他们带来更多的权益及优惠&#xff0c;那么问题来了&#xff0c;到底哪家的会员优惠更多呢&#xff1f; 根据第三方统计的下载数据来看&#xff0c;APP STO…

云计算与大数据领域新指南 | 《揭秘云计算与大数据》助您驾驭数字化浪潮!

日前&#xff0c;《揭秘云计算与大数据》正式上市。这本由国际知名的技术专家撰写的书籍&#xff0c;将带领读者深入了解云计算和大数据领域的技术前沿和应用趋势&#xff0c;为读者呈现一个全面而深入的视角。 随着信息技术的飞速发展&#xff0c;云计算和大数据作为两大前沿…

iOS——Block回调

先跟着我实现最简单的 Block 回调传参的使用&#xff0c;如果你能举一反三&#xff0c;基本上可以满足了 OC 中的开发需求。已经实现的同学可以跳到下一节。 首先解释一下我们例子要实现什么功能&#xff08;其实是烂大街又最形象的例子&#xff09;&#xff1a; 有两个视图控…