可视化数据

数据科学家会直观呈现数据,以更好地理解数据。 他们可以扫描原始数据、检查摘要度量值(如平均值)或绘制数据图表。 图表是一种可视化数据的强有力方式,数据科学家经常使用图表快速了解适度复杂的模式。

直观地表示数据

绘制图表是为了提供对数据的快速定性评估,这有助于理解结果、查找离群值、了解数字的分布方式等。

尽管有时候我们提前知道哪种图表最有用,但其他时候我们以探索性的方式使用图表。 若要了解数据可视化效果的强大功能,请考虑以下数据:无人驾驶汽车的位置 (x,y)。 在数据的原始形式下,很难看到任何真实的模式。 平均值告诉我们,汽车的路径以 x = 0.2 和 y = 0.3 为中心,数值范围似乎介于 -2 和 2 之间。

使用Matplotlib直观呈现数据

加载上一次的数据,在这次尝试图形化

DataFrames提供了一种探索和分析表格数据的好方法,但有时一张图片胜过一千行和一千列。Matplotlib库提供了绘制数据可视化的基础,可以大大增强您分析数据的能力。
让我们从一个简单的条形图开始,它显示了每个学生的成绩。

 

好吧,这是有效的,但图表可以使用一些改进,使它更清楚我们正在看什么。
请注意,您使用了Matplotlib中的pyplot类来绘制图表。这个类提供了许多方法来改进绘图的视觉元素。例如,下面的代码:

Specifies the color of the bar chart.
指定条形图的颜色。
Adds a title to the chart (so we know what it represents)
在图表中添加标题(以便我们知道它代表什么)
Adds labels to the X and Y axes (so we know which axis shows which data)
向X和Y轴添加标签(以便我们知道哪个轴显示哪个数据)
Adds a grid (to make it easier to determine the values for the bars)
添加网格(以便于确定条形图的值)
Rotates the X markers (so we can read them)
旋转X标记(以便我们可以读取它们)

我们可以通过figure()方法,来控制图形的大小

一个图形可以包含多个子图,每个子图都在自己的轴上。
例如,下面的代码创建一个具有两个子图的图形:一个是显示学生成绩的条形图,另一个是比较及格与不及格成绩的饼图。

 到目前为止,您一直使用Matplotlib.pyplot对象的方法绘制图表。然而,Matplotlib是Python中图形的基础,许多包,包括Pandas,提供了抽象底层Matplotlib函数和简化绘图的方法。例如,DataFrame提供了自己的方法来绘制数据,如下面的示例所示,该示例绘制了学习时数的条形图。

统计分析入门 

现在你已经知道如何使用Python来操作和可视化数据,你可以开始分析它了。
许多数据科学都植根于统计学,因此我们将探索一些基本的统计技术。

(仅仅是一些统计概念和技术)

描述性统计和数据分布

在检查变量(例如,学生成绩样本)时,数据科学家对其分布特别感兴趣(换句话说,所有不同的成绩值如何在样本中分布)。这种探索的起点通常是将数据可视化为直方图,并查看变量的每个值出现的频率。

 等级的直方图是对称的形状,其中最常出现的等级往往在范围的中间(大约50),在尺度的极端处的等级较少。

集中量数

为了更好地理解分布,我们可以研究所谓的集中趋势的度量,这是一种描述代表数据“中间”的统计数据的奇特方式。这种分析的目的是试图找到一个“典型”值。定义数据中间的常见方法包括:

The mean: A simple average based on adding together all of the values in the sample set and then dividing the total by the number of samples.
平均值:将样本集中的所有值相加,然后将总和除以样本数得到的简单平均值。
The median: The value in the middle of the range of all of the sample values.
中位数:所有样本值范围中间的值。
The mode: The most commonly occurring value in the sample set*.
众数:样品组*中最常出现的值。

让我们计算这些值,沿着最小值和最大值以进行比较,并将它们显示在直方图上。

 

箱形图以不同于直方图的格式显示坡率值的分布。图的方框部分显示数据的内部两个四分位数所在的位置。在这种情况下,一半的等级在大约36到63之间。从方框中延伸出来的胡须显示了外部的两个四分位数,因此本例中的另一半等级介于0和36之间或63和100之间。框中的线表示中值。
对于学习,将直方图和箱线图结合起来是很有用的,其中箱线图的方向被改变以使其与直方图对齐。(在某些方面,将直方图视为分布的“正视图”,将箱形图视为分布的“平面图”是有帮助的。

 

 

所有集中趋势的测量值都位于数据分布的中间,这是对称的,从中间开始,值在两个方向上逐渐变低。
为了更详细地探索这种分布,您需要了解统计学的基本原理是获取数据样本并使用概率函数来推断有关整个数据总体的信息。
这是什么意思呢?样本指的是我们手头上的数据,比如这22名学生的学习习惯和成绩等信息。人口是指我们可以收集的所有可能的数据,例如历史上每个教育机构的每个学生的成绩和学习习惯。通常,我们感兴趣的是人口,但收集所有这些数据是不切实际的。相反,我们需要尝试从我们拥有的少量数据(样本)中估计人口是什么样的。
如果我们有足够的样本,我们可以计算一个称为概率密度函数的东西,它估计了整个人口的等级分布。
Matplotlib中的pyplot类提供了一个有用的plot函数来显示这个密度。

 真实世界的数据分布

现在让我们来看看学习时间数据的分布

 学习时间数据的分布与年级的分布有显著差异。
请注意,箱形图的须线仅从6. 0左右开始开始,这表明第一季度的绝大多数数据都高于此值。最小值用o标记,表明它在统计上是一个离群值:一个显著位于分布其余部分范围之外的值。
异常值的出现有多种原因。也许一个学生打算记录“10”小时的学习时间,但输入了“1”,错过了“0”。又或者,这学生平时学习的时候,就是异常的懒!无论哪种方式,这是一个统计异常,并不代表一个典型的学生。让我们看看没有它的分布是什么样的。

 出于学习的目的,我们只是将值1视为真正的离群值并将其排除在外。在真实的世界中,当我们的样本量如此之小时,在没有更多理由的情况下排除极端数据是不寻常的。这是因为我们的样本量越小,我们的抽样越有可能代表整个人口。(Here,人口意味着所有学生的成绩,而不仅仅是我们的22。例如,如果我们对另外1,000名学生的学习时间进行抽样,我们可能会发现,学习不多实际上是很常见的!
当我们有更多的数据可用时,我们的样本变得更可靠。这使得更容易将离群值视为低于或高于大多数数据所在的范围的值。例如,以下代码使用Pandas分位数函数排除低于第0.01百分位数(99%的数据位于该值之上)的观测。

提示:可以通过在高百分位值处定义阈值来消除分布上端的离群值。例如,你可以使用分位数函数来查找0.99百分位数,99%的数据位于该百分位数以下。

去除离群值后,箱形图显示了四个四分位数内的所有数据。请注意,该分布不像坡度数据那样对称。有些学生的学习时间非常长,大约为16小时,但大部分数据都在7到13小时之间。少数极高的值将平均值拉向量表的高端。
让我们看看这个分布的密度。

这种分布称为右偏分布。大量数据位于分布的左侧,由于极端高端的值将均值拉到右侧,因此向右创建了一个长尾。 

方差度量

所以现在我们有一个很好的想法,在年级和学习时间数据分布的中间。然而,我们应该检查分布的另一个方面:数据中有多少可变性?
衡量数据可变性的典型统计量包括:

Range: The difference between the maximum and minimum. There's no built-in function for this, but it's easy to calculate using the min and max functions.
范围:最大值和最小值之间的差值。没有内置的函数,但使用min和max函数很容易计算。
Variance: The average of the squared difference from the mean. You can use the built-in var function to find this.
方差:与平均值的平方差的平均值。您可以使用内置的var函数来找到它。
Standard Deviation: The square root of the variance. You can use the built-in std function to find this.
标准差:方差的平方根。你可以使用内置的std函数来找到它。

 在这些统计数据中,标准差通常是最有用的。它以与数据本身相同的尺度提供数据方差的度量(因此,等级分布的等级点和学习时间分布的小时数)。标准差越高,将分布中的值与分布均值进行比较时的方差就越大;换句话说,数据更加分散。
当使用正态分布时,标准差与正态分布的特定特征一起使用,以提供更好的洞察力。运行以下单元格以查看标准差与正态分布中的数据之间的关系。

 

 

水平线显示在平均值的一个、两个和三个标准差(正或负)内的数据的百分比。
在任何正态分布中:.
大约68.26%的值在平均值的一个标准差内。
大约95.45%的值落在平均值的两个标准差内。
大约99.73%的值落在平均值的三个标准差内。
所以,因为我们知道平均成绩是49.18,标准差是21.74,成绩分布近似正态分布,我们可以计算出68.26%的学生应该达到27.44和70.92之间的成绩。
我们用来了解学生数据变量分布的描述性统计是统计分析的基础。因为它们是探索数据的重要部分,所以DataFrame对象有一个内置的describe方法,它返回所有数值列的主要描述性统计信息。

比较数据 

现在您已经了解了数据集中数据的统计分布,可以检查数据以确定变量之间的任何明显关系。
首先,让我们删除任何包含离群值的行,以便我们拥有代表典型学生班级的样本。我们发现StudyHours列包含一些值极低的离群值,因此我们将删除这些行。

比较数据和分类变量

数据包括两个数值变量(学习时间和成绩)和两个分类变量(姓名和通过)。让我们首先将数值StudyHours列与分类Pass列进行比较,以查看学习的小时数与及格分数之间是否存在明显的关系。
为了进行这种比较,让我们创建箱形图,显示每个可能的Pass值(true和false)的StudyHours分布。

比较数值变量 

现在让我们比较两个数值变量。我们将首先创建一个显示成绩和学习时间的条形图。

图表显示了每个学生的成绩和学习时间,但由于数值在不同的尺度上,因此不容易进行比较。一个等级是以等级点来衡量的(范围从3到97),学习时间以小时来衡量(范围从1到16)。
在处理不同尺度的数值数据时,一种常见的技术是对数据进行归一化,以便值保持其比例分布,但在相同的尺度上进行测量。为了实现这一点,我们将使用一种称为MinMax缩放的技术,该技术将值按比例分布在0到1的范围内。你可以编写代码来应用这种转换,但Scikit-Learn库提供了一个缩放器来为你做这件事。

 将数据标准化后,更容易看到成绩和学习时间之间的明显关系。这不是一个完全匹配的结果,但看起来分数高的学生学习得更多。
因此,学习时间和成绩之间似乎存在相关性。事实上,我们可以使用统计相关性度量来量化这些列之间的关系。

 相关性统计量是一个介于-1和1之间的值,表示关系的强度。大于0的值表示正相关(一个变量的高值往往与另一个变量的高值一致),而小于0的值表示负相关(一个变量的高值往往与另一个变量的低值一致)。在这种情况下,相关值接近于1,显示出学习时间和成绩之间的强正相关。

可视化两个数字列之间明显相关性的另一种方法是使用散点图

 再次,看起来有一个明显的模式,学习时间最长的学生也是成绩最高的学生。
我们可以通过在显示数据总体趋势的图中添加回归线(或最佳拟合线)来更清楚地看到这一点。为此,我们将使用一种称为最小二乘回归的统计技术。
还记得你在学校学习如何解线性方程组的时候,记得线性方程的斜率截距形式看起来像这样:
在这个等式中,y和x是坐标变量,m是直线的斜率,B是y轴截距(直线通过Y轴的位置)。

在学生数据的散点图中,我们已经有了x(StudyHours)和y(Grade)的值,所以我们只需要计算最接近这些点的直线的截距和斜率。然后,我们可以形成一个线性方程,为我们的每个x(StudyHours)值计算该线上的新y值。为了避免混淆,我们将这个新的y值称为f(x)(因为它是基于x的线性方程函数的输出)。原始y(等级)值和f(x)值之间的差是我们的回归线和学生实际等级之间的误差。我们的目标是计算具有最低总体误差的直线的斜率和截距。
具体来说,我们通过对每个点的误差进行平方,并将所有平方误差相加来定义总误差。最佳拟合线是为我们提供平方误差之和的最低值的线,因此称为最小二乘回归。
幸运的是,您不需要自己编写回归计算代码。SciPy包包括一个stats类,它提供了一个linregress方法来为您完成这项艰巨的工作。这将返回斜率方程所需的系数:基于要比较的给定变量样本对的斜率(m)和截距(B)。

  

 

请注意,这一次,代码绘制了两个不同的东西:像以前一样绘制了样本学习时间和成绩的散点图,然后绘制了基于最小二乘回归系数的最佳拟合线。
图上方显示了回归线计算的斜率和截距系数。
该线基于为每个StudyHours值计算的f(x)值。运行以下单元格以查看包含以下值的表:
每个学生的学习时间
每个学生取得的成绩
使用回归线系数计算的f(x)值
计算的f(x)值与实际坡率值之间的误差
有些错误,特别是在极端情况下,是相当大的(高达17.5级以上)。但是,总的来说,这条线非常接近实际成绩。

使用回归系数预测 

 

 

 

 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux网络编程】传输协议UDP

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 🌈个人主页: 南桥几晴秋 🌈C专栏: 南桥谈C 🌈C语言专栏: C语言学习系…

SEC_ASA 第二天作业

拓扑 按照拓扑图配置 NTP,Server端为 Outside路由器,Client端为 ASA,两个设备的 NTP传输使用MD5做校验。(安全 V4 LAB考点) 提示:Outside路由器作为 Server端要配置好正确的时间和时区,ASA防…

HTML5 拖拽 API 深度解析

一、HTML5 拖拽 API 深度解析 1.1 背景与发展 HTML5 的拖拽 API 是为了解决传统拖拽操作复杂而设计的。传统方法依赖鼠标事件和复杂的逻辑计算,而 HTML5 提供了标准化的拖拽事件和数据传递机制,使得开发者能够快速实现从一个元素拖拽到另一个元素的交互…

阿里云-通义灵码:测试与实例展示

目录 一.引子 二.例子 三.优点 四.其他优点 五.总结 一.引子 在软件开发的广袤天地中,阿里云通义灵码宛如一座蕴藏无尽智慧的宝库,等待着开发者们去深入挖掘和探索。当我们跨越了入门的门槛,真正开始使用通义灵码进行代码生成和开发工作…

第P2周:Pytorch实现CIFAR10彩色图片识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目标 实现CIFAR-10的彩色图片识别实现比P1周更复杂一点的CNN网络 具体实现 (一)环境 语言环境:Python 3.10 编 译 器: …

【数字花园】数字花园(个人网站、博客)搭建经历汇总教程

目录 写在最最前面第一章:netlify免费搭建数字花园相关教程使用的平台步骤信息管理 第二章:本地部署数字花园数字花园网站本地手动部署方案1. 获取网站源码2.2 安装 Node.js 3. 项目部署3.1 安装项目依赖3.2 构建项目3.3 启动http服务器 4. 本地预览5. 在…

Hadoop一课一得

Hadoop作为大数据时代的奠基技术之一,自问世以来就深刻改变了海量数据存储与处理的方式。本文将带您深入了解Hadoop,从其起源、核心架构、关键组件,到典型应用场景,并结合代码示例和图示,帮助您更好地掌握Hadoop的实战…

使用 GD32F470ZGT6,手写 I2C 的实现

我的代码:https://gitee.com/a1422749310/gd32_-official_-code I2C 具体代码位置:https://gitee.com/a1422749310/gd32_-official_-code/blob/master/Hardware/i2c/i2c.c 黑马 - I2C原理 官方 - IIC 协议介绍 个人学习过程中的理解,有错误&…

WPF Prism ViewInjection

ViewInjection介绍 ViewInjection是Prism框架提供的一种机制,用于将视图动态地注入到指定的容器(Region)中。这种注入方式允许你在运行时动态地添加、移除或替换视图,从而实现更灵活的用户界面设计。 ViewInjection示例 GitHub…

软考高级架构 - 11.1- 信息物理系统CPS

信息物理系统CPS 信息物理系统(CPS)是控制系统、嵌入式系统的扩展与延伸。通过集成先进的感知、计算、通信、控制等信息技术和自动控制技,构建了物理空间与信息空间中人、机、物、环境、信息等要素相互映射、适时交互、高效协同的夏杂系统。 CPS的本质是基于…

后端开发工程师需要掌握哪些设计模式?

大家好,我是袁庭新。 作为后端开发者,学习和掌握设计模式是非常有必要的。不仅可以帮助后端开发者更好地设计和实现软件架构,还可以提高代码的质量和可维护性。此外,设计模式也是后端开发面试中常见的考点之一,掌握它…

【Android Studio】学习——数据存储管理

AndroidStudio实验——数据存储管理 文章目录 AndroidStudio实验——数据存储管理[toc]一:实验目标和实验内容:二:数据库的CRUD操作【一】创建(Create)【2】读取(Read)【3】更新(Upd…

科研绘图系列:R语言绘制热图和散点图以及箱线图(pheatmap, scatterplot boxplot)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载图1图2图3系统信息参考介绍 R语言绘制热图和散点图以及箱线图(pheatmap, scatterplot & boxplot) 加载R包 library(magrittr) library(dplyr) library(ve…

【Qt】信号、槽

目录 一、信号和槽的基本概念 二、connect函数:关联信号和槽 三、自定义信号和槽 1.自定义槽函数 2.自定义信号函数 例子: 四、带参的信号和槽 例子: 五、Q_OBJECT宏 六、断开信号和槽的连接 例子: 一、信号和槽的基本…

一种构建网络安全知识图谱的实用方法

文章主要工作 论述了构建网络安全知识库的三个步骤,并提出了一个构建网络安全知识库的框架;讨论网络安全知识的推演 1.框架设计 总体知识图谱框架如图1所示,其包括数据源(结构化数据和非结构化数据)、信息抽取及本体构建、网络…

JAVA后端实现全国区县下拉选择--树形结构

设计图如图&#xff1a; 直接上代码 数据库中的格式&#xff1a; JAVA实体类&#xff1a; Data public class SysAreaZoningDO {private Long districtId;private Long parentId;private String districtName;private List<SysAreaZoningDO> children; } MapperSQL语句…

青少年夏令营管理系统的设计与开发(社团管理)(springboot+vue)+文档

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

安卓低功耗蓝牙BLE官方开发例程(JAVA)翻译注释版

官方原文链接 https://developer.android.com/develop/connectivity/bluetooth/ble/ble-overview?hlzh-cn 目录 低功耗蓝牙 基础知识 关键术语和概念 角色和职责 查找 BLE 设备 连接到 GATT 服务器 设置绑定服务 设置 BluetoothAdapter 连接到设备 声明 GATT 回…

Windows 系统中的组策略编辑器如何打开?

组策略是 Windows 操作系统中用于设置计算机和用户配置的重要工具。它允许管理员控制各种系统功能&#xff0c;从桌面背景到安全设置等。对于 Windows 专业版、企业版和教育版用户来说&#xff0c;可以通过组策略编辑器&#xff08;Group Policy Editor&#xff09;来管理这些设…

MySQL删除外键报错check that column/key exists

在我们删除外键的时候&#xff0c;报了check that column/key exists这个错误&#xff0c;这是因为你的外键名字没写对&#xff0c;我们以为我们写的字段名就是我们的外键其实并不是&#xff0c;我们可以通过show create table[ ]来查看外键的名字 所以删除外键的时候应该这样…