机器学习04-数据理解之数据可视化-(基于Pima数据集)
什么是数据可视化?
数据可视化是指通过图表、图形、地图等视觉元素将数据呈现出来的过程。它是将抽象的、复杂的数据转化为直观、易于理解的视觉表达的一种方法。数据可视化的目的是帮助人们更好地理解数据,从中发现模式、趋势、关联和异常,从而作出更明智的决策。
数据可视化在各个领域都有广泛的应用,包括商业、科学、工程、医疗、社会科学等。通过可视化数据,我们可以更好地探索数据之间的关系,展示数据的变化趋势,发现数据的异常值,并从中得出洞察和结论。
常见的数据可视化形式包括:
-
折线图和曲线图:用于显示随时间或其他连续变量的趋势和变化。
-
条形图和柱状图:用于比较不同类别或组之间的数据。
-
饼图和环形图:用于显示组成部分的相对比例。 散点图:用于展示两个变量之间的关系和分布。
-
热力图:用于显示数据在二维空间上的密度和分布情况。
-
地图可视化:将数据以地理位置为基础展示在地图上,用于显示地理分布和空间相关性。
-
仪表盘:集成多种图表和指标,用于提供全面的数据概览。
数据可视化不仅使数据更易于理解和交流,而且有助于发现隐藏在数据中的模式和见解,从而对业务和决策产生积极的影响。然而,数据可视化也需要注意设计和解释,以确保传达的信息准确、清晰且不误导。
直方图
直方图是一种常见的数据可视化图表,用于显示连续变量的分布情况。它将数据划分为若干个等距的区间(称为“箱子”或“柱”),并计算每个区间内数据点的频数(或频率),然后将这些频数用柱状图表示。
直方图的横轴表示连续变量的取值范围,纵轴表示频数(或频率,即频数与总样本数之比)。每个柱子的宽度表示区间的范围,柱子的高度表示该区间内数据点的数量或频率。
直方图的主要用途
是展示数据的分布情况,帮助我们理解数据集中值的范围、数据点的密度和分布模式。通过直方图,我们可以快速获得以下信息:
- 数据的中心趋势:通过直方图的峰值可以了解数据的主要集中区域。
- 数据的离散程度:直方图的宽度和峰值陡峭程度可以显示数据的分散程度。
- 数据的异常值:通过观察直方图的尾部可以发现异常值或离群点。
- 数据的分布形态:直方图的形状可以显示数据的分布模式,如正态分布、偏态等。
绘制直方图的步骤包括:
- 确定数据集的范围和区间数量。
- 将数据划分到对应的区间,并计算每个区间内数据点的频数或频率
- 绘制柱状图,横轴表示区间,纵轴表示频数或频率。
- 可选地添加标题、标签和图例等,以增加图表的可读性和易理解性。
直方图是一种简单而强大的数据可视化工具,适用于各种类型的数据,尤其是连续变量的分布展示和对比分析。
废话不多说,下面用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()
运行结果:
这里就简单介绍这几种吧,类似得图表还有很多,要熟悉图表 不能光看,动手实验看懂 对看懂各个图表 会事半功倍!
相关文章:

机器学习04-数据理解之数据可视化-(基于Pima数据集)
什么是数据可视化? 数据可视化是指通过图表、图形、地图等视觉元素将数据呈现出来的过程。它是将抽象的、复杂的数据转化为直观、易于理解的视觉表达的一种方法。数据可视化的目的是帮助人们更好地理解数据,从中发现模式、趋势、关联和异常,从而作出更明…...

百度@全球开发者,见证中国科技超级“碗”!
潮汐涌动时,变化悄然发生。2023年全球AI浪潮迭起,大语言模型热度空前,生成式人工智能为千行百业高质量发展带来更多想象空间,一个蓬勃创新、重构万物的“大模型时代”正蓄势待发。 滴滴滴~百度全球开发者,…...

分库分表之基于Shardingjdbc+docker+mysql主从架构实现读写分离(一)
说明:请先自行安装好docker再来看本篇文章,本篇文章主要实现通过使用docker部署mysql实现读写分离,并连接数据库测试。第二篇将实现使用Shardingjdbc实现springboot的读写分离实现。 基于Docker去创建Mysql的主从架构 #创建主从数据库文件夹…...

Ajax跨域问题
什么是跨域问题? 跨域问题来源于JavaScript的"同源策略",即只有 协议主机名端口号 (如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。跨域问题是针对JS和ajax的&…...

Vue + FormData + axios实现图片上传功能
当使用Vue FormData axios实现图片上传功能时,你可以按照以下步骤进行操作: 示例代码 首先,在Vue组件中,创建一个data属性来存储选择的文件和上传状态: data() {return {file: null,uploading: false}; }在模板中…...

设计模式系列:经典的单例模式
单例模式,是设计模式当中非常重要的一种,在面试中也常常被考察到。 正文如下: 一、什么时候使用单例模式? 单例模式可谓是23种设计模式中最简单、最常见的设计模式了,它可以保证一个类只有一个实例。我们平时网购时用的购物车,就是单例模式的一个例子。想一想,如果购物…...

macbook pro 散热解决办法
结论: 2017 macbook pro 13.3 寸 控制住温度, 不惧长时间满载、性能也飞起. 方案说明最低温度满载温度一、终极方案(成本 460元)120w半导体散热 导热垫31度71度二、推荐方案, 完全静音(成本 50元)828散热风扇 导热垫43度81度三、不拆机、低成本(20元)828散热风扇56度91度四、…...

高并发与性能优化的神奇之旅
作为公司的架构师或者程序员,你是否曾经为公司的系统在面对高并发和性能瓶颈时感到手足无措或者焦头烂额呢?笔者在出道那会为此是吃尽了苦头的,不过也得感谢这段苦,让笔者从头到尾去探索,找寻解决之法。 目录 第一站&…...

Django Rest_Framework(一)
1. Web应用模式 在开发Web应用中,有两种应用模式: 前后端不分离[客户端看到的内容和所有界面效果都是由服务端提供出来的。] 前后端分离【把前端的界面效果(html,css,js分离到另一个服务端或另一个目录下,python服务…...

VB+ACCESS智能公交考勤系统管理软件设计与实现
智能公交考勤系统管理软件设计 摘要:随着现代科学技术的发展,越来越多的企业对职工的考勤管理都实行了信息化管理,使用计算机系统代替繁琐冗余的手工方式来管理考勤事务。针对公交考勤的系统管理、人事管理、运营管理,提出了智能公交考勤管理系统。 智能公交考勤系统是典…...

企业电子招标采购系统源码Spring Boot + Mybatis + Redis + Layui + 前后端分离 构建企业电子招采平台之立项流程图 tbms
 项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&am…...

【ES】笔记-ECMAScript 相关介绍
ECMASript 相关介绍 什么是ECMA ECMA(European Computer Manufacturers Association)中文名称为欧洲计算机制 造商协会,这个组织的目标是评估、开发和认可电信和计算机标准。1994 年后该 组织改名为 Ecma 国际。 什么是 ECMAScript ECMAS…...

FFmpeg下载安装及Windows开发环境设置
1 FFmpeg简介 FFmpeg:FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。项目的名称来自MPEG视频编码标准,前面的"FF"代表…...

transformer面试常考题
1.位置编码有哪些?有什么区别? nn.embedding和正余弦编码两种用的多。nn.embedding是一种基于学习的嵌入方法, 通过神经网络的训练过程, 会自动学习数据中每个符号的嵌入向量表示。 而正余弦编码是一种手工设计的嵌入方式&…...

aws的EC2云服务器
亚马逊官网有免费试用1年的服务器 1. 启动生成实例 1.1 创建实例时需要生成 使用的默认的 Amazon Linux 和 一个.pem后缀的秘钥 1.2 网上下一个Mobaxterm ,实例名是公有 IPv4 DNS 地址 ,使用SSH连接,登录名是ec2-user...

hive函数大全
在hive内部有许多函数,如下: 内置运算符 关系运算符 算术运算符 逻辑运算符 复杂类型函数 内置函数内置聚合函数 数学函数 收集函数 类型转换函数 日期函数 条件函数 字符函数 内置聚合函数 内置表生成函数 1.1关系运算符 等值比较: 等值比较:<>…...

k8s概念-StatefulSet
StatefulSet 是用来管理有状态应用的控制器 StatefulSet 用来管理某Pod集合的部署和扩缩, 并为这些 Pod 提供持久存储和持久标识符StatefulSet | KubernetesStatefulSet 运行一组 Pod,并为每个 Pod 保留一个稳定的标识。 这可用于管理需要持久化存储或稳…...

HTMLCollection 和 NodeList 的详解,以及两者在开发情况下差异。
看结果直接看下文的举例子 HTMLCollection HTMLCollection 表示一个包含了元素(元素顺序为文档流中的接口)的集合(通用集合),还提供了从该集合中选择元素的属性和方法。 HTMLCollection 对象中的属性和方法: item(index) —— 返回 HTMLCollection 中指…...

基于FPGA的超声波测距——UART串口输出
文章目录 前言一、超声波模块介绍1、产品特点2、超声波模块的时序图 二、系统设计1、系统模块框图2、RTL视图 三、源码1、div_clk_us(1us的分频)2、产生驱动超声波的信号3、串口发送模块4、HC_SR04_uart(顶层文件) 四、效果五、总结六、参考资料 前言 环境: 1、Quar…...

Python web实战之 Django 的 MVC 设计模式详解
技术栈:Python、Django、HTML、CSS、JavaScript。 概要 在 Web 开发中,MVC(Model-View-Controller)模式是一种非常常见的设计模式,它可以帮助我们更好地管理代码,提高代码的可维护性。今天就介绍如何使用 …...

Stable Diffusion VAE:改善图像质量的原理、选型与使用指南
VAE Stable Diffusion(稳定扩散)是一种用于生成模型的算法,结合了变分自编码器(Variational Autoencoder,VAE)和扩散生成网络(Diffusion Generative Network)的思想。它通过对变分自…...

maven里面没有plugins dependence问题解决
说明:今天在做Nacos、Dubbo整合的时候,在父模块中做了版本限制,出错后就又把版本控制什么都删掉,回退到最开始的状态,此时父模块下面的服务右侧的 maven里面没有plugins dependence ,然后项目全都报错。 问…...

Wi-Fi 6技术详解
1. 介绍 Wi-Fi 6,也称为802.11ax,是Wi-Fi技术的最新标准。它是对之前标准Wi-Fi 5(802.11ac)的升级和改进,旨在提供更高的速度、更大的容量、更好的性能和更高的可靠性。Wi-Fi 6技术的引入为无线网络带来了革命性的变化…...

【LeetCode】446. 等差数列划分II -- 子序列
题目链接 文章目录 1. 思路讲解1.1 dp表的创建1.2 状态转移方程1.3 使用哈希表找到k1.4 初始化1.5 返回值1.6 该题坑爹的一点 2. 代码编写 1. 思路讲解 我们要知道以某个位置为结尾的子序列的数量,可以通过它的以上一位置的为结尾的子序列的数量得知,也…...

几个似非而是的注释问题
C 语言的注释可以出现在 C 语言代码的任何地方。这句话对不对?这是我当学生时我 老师问的一个问题。我当时回答是不对。好,那我们就看看下面的例子: A ), int/*...*/i; B ), char* s"…...

【设计模式|上】创建型模式
every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 设计模式(上): 简单工厂模式工厂模式抽象工厂模式建造者模式单例模式 1. 正文 1.1 创建型(Creational Patterns) …...

【JS】类 class
【JS】类 class 定义类类的方法类继承静态方法 类(class)是用于创建对象的模板。 我们使用 class 关键字来创建一个类,类体在一对大括号 {} 中,我们可以在大括号 {} 中定义类成员的位置,如方法或构造函数。 每个类中…...

Ubuntu安装harbor(http模式)并随便上传一个
Ubuntu安装harbor(http模式) docker和harbor的介绍就免了,都不知道啥东西,还安装搞毛 先安装docker环境 不要问,软件源之类的配置,挨个梭就行 sudo apt update sudo apt install apt-transport-https ca…...

《向量数据库指南》——腾讯云向量数据库Tencent Cloud Vector DB正式上线公测!提供10亿级向量检索能力
8月1日,腾讯云向量数据库(Tencent Cloud Vector DB)已正式上线公测。在腾讯云官网上搜索“向量数据库”,就可以正式体验该产品。 腾讯云向量数据库不仅能为大模型提供外部知识库,提高大模型回答的准确性,还可广泛应用于推荐系统、文本图像检索、自然语言处理等 AI 领域。…...

1分钟解决github push/pull报错443
1.打开https://www.ipaddress.com/ 2.复制如图IP地址 3.文件夹打开C:\Windows\System32\drivers\etc,复制hosts文件,粘贴到桌面 4.在桌面用记事本打开复制过来的hosts 5.在末尾加上一行,IP写刚才复制的 6.复制桌面的hosts,粘贴回C:\Window…...