无涯教程-机器学习 - 数据统计

news2024/11/15 8:38:27

在进行机器学习项目时,通常无涯教程会忽略两个最重要的部分,分别是 数学 和 数据 。这是因为知道ML是一种数据驱动的方法,并且ML模型只会产生与提供给它的数据一样好的或坏的输出。

在上一章中,讨论了如何将CSV数据上传到ML项目中,但是最好在上传之前了解数据。可以通过统计和可视化两种方式来理解数据。

在本章中,在遵循以下Python的帮助下将了解带有统计信息的ML数据。

查看数据

第一个秘诀是查看原始数据,查看原始数据很重要,因为无涯教程在查看原始数据后增加为ML项目更好地进行预处理以及处理数据的机会。

以下是通过使用Pima Indians糖尿病数据集上的Pandas DataFrame的head()函数实现的Python脚本,以查看前50行数据-

from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
headernames = [preg, plas, pres, skin, test, mass, pedi, age, class]
data = read_csv(path, names=headernames)
print(data.head(50))
preg plas  pres skin test   mass pedi   age      class
0     6    148  72   35     0    33.6   0.627    50     1
1     1     85  66   29     0    26.6   0.351    31     0
2     8    183  64    0     0    23.3   0.672    32     1
3     1     89  66   23    94    28.1   0.167    21     0
4     0    137  40   35   168    43.1   2.288    33     1
5     5    116  74    0     0    25.6   0.201    30     0
6     3     78  50   32    88    31.0   0.248    26     1
7    10    115   0    0     0    35.3   0.134    29     0
8     2    197  70   45   543    30.5   0.158    53     1
9     8    125  96    0     0     0.0   0.232    54     1
10    4    110  92    0     0    37.6   0.191    30     0
11   10    168  74    0     0    38.0   0.537    34     1
12   10    139  80    0     0    27.1   1.441    57     0
13    1    189  60   23   846    30.1   0.398    59     1
14    5    166  72   19   175    25.8   0.587    51     1
15    7    100   0    0     0    30.0   0.484    32     1
16    0    118  84   47   230    45.8   0.551    31     1
17    7    107  74    0     0    29.6   0.254    31     1
18    1    103  30   38    83    43.3   0.183    33     0
19    1    115  70   30    96    34.6   0.529    32     1
20    3    126  88   41   235    39.3   0.704    27     0
21    8     99  84    0     0    35.4   0.388    50     0
22    7    196  90    0     0    39.8   0.451    41     1
23    9    119  80   35     0    29.0   0.263    29     1
24   11    143  94   33   146    36.6   0.254    51     1
25   10    125  70   26   115    31.1   0.205    41     1
26    7    147  76    0     0    39.4   0.257    43     1 
27    1     97  66   15   140    23.2   0.487    22     0
28   13    145  82   19   110    22.2   0.245    57     0
29    5    117  92    0     0    34.1   0.337    38     0
30    5    109  75   26     0    36.0   0.546    60     0
31    3    158  76   36   245    31.6   0.851    28     1
32    3     88  58   11    54    24.8   0.267    22     0 
33    6     92  92    0     0    19.9   0.188    28     0
34   10    122  78   31     0    27.6   0.512    45     0 
35    4    103  60   33   192    24.0   0.966    33     0
36   11    138  76    0     0    33.2   0.420    35     0
37    9    102  76   37     0    32.9   0.665    46     1
38    2     90  68   42     0    38.2   0.503    27     1
39    4    111  72   47   207    37.1   1.390    56     1
40    3    180  64   25    70    34.0   0.271    26     0
41    7    133  84    0     0    40.2   0.696    37     0
42    7    106  92   18     0    22.7   0.235    48     0
43    9    171 110   24   240    45.4   0.721    54     1 
44    7    159  64    0     0    27.4   0.294    40     0
45    0    180  66   39     0    42.0   1.893    25     1
46    1    146  56    0     0    29.7   0.564    29     0
47    2     71  70   27     0    28.0   0.586    22     0
48    7    103  66   32     0    39.1   0.344    31     1
49    7    105   0    0     0    0.0    0.305    24     0

无涯教程可以从上面的输出中观察到,第一列给出了行号,这对于引用特定观察值非常有用。

检查数据

知道ML项目拥有多少数据(以行和列为单位)始终是一个好习惯,背后的原因是-

  • 假设行和列过多,则运行该算法和训练模型将花费很长时间。

  • 假设行和列的数量太少,那么将没有足够的数据来很好地训练模型。

以下是通过在Pandas Data Frame上打印shape属性实现的Python脚本。

from pandas import read_csv
path = r"C:\iris.csv"
data = read_csv(path)
print(data.shape)
(150, 4)

可以从输出中轻松观察到将要使用的数据集具有150行4列。

获取属性类型

了解每个属性的数据类型是另一种好习惯,背后的原因是,根据要求,有时可能需要将一种数据类型转换为另一种数据类型。例如,可能需要将字符串转换为浮点数或整数,以表示分类或有序值。通过查看原始数据,可以对属性的数据类型有所了解,但是另一种方法是使用Pandas DataFrame的 dtypes 属性。借助 dtypes 属性,无涯教程可以对每种属性数据类型进行分类。可以通过以下Python脚本来理解-

from pandas import read_csv
path = r"C:\iris.csv"
data = read_csv(path)
print(data.dtypes)
sepal_length   float64
sepal_width    float64
petal_length   float64
petal_width    float64
dtype: object

从上面的输出中,可以轻松地获取每个属性的数据类型。

数据统计汇总

已经讨论了Python配方来获取数据的维度,即行和列的数量,但是很多时候需要查看该数据维度的摘要。可以借助Pandas DataFrame的describe()函数来完成,该函数进一步提供每个数据属性的以下8个统计属性-

  • Count
  • Mean
  • Standard Deviation
  • Minimum Value
  • Maximum value
  • 25%
  • Median i.e. 50%
  • 75%
from pandas import read_csv
from pandas import set_option
path = r"C:\pima-indians-diabetes.csv"
names = [preg, plas, pres, skin, test, mass, pedi, age, class]
data = read_csv(path, names=names)
set_option(display.width, 100)
set_option(precision, 2)
print(data.shape)
print(data.describe())
(768, 9)
       preg     plas     pres    skin     test     mass     pedi     age      class
count  768.00   768.00   768.00  768.00   768.00   768.00   768.00   768.00   768.00
mean     3.85   120.89    69.11   20.54    79.80    31.99     0.47    33.24     0.35
std      3.37    31.97    19.36   15.95   115.24     7.88     0.33    11.76     0.48
min      0.00     0.00     0.00    0.00     0.00     0.00     0.08    21.00     0.00
25%      1.00    99.00    62.00    0.00     0.00    27.30     0.24    24.00     0.00
50%      3.00   117.00    72.00   23.00    30.50    32.00     0.37    29.00     0.00
75%      6.00   140.25    80.00   32.00   127.25    36.60     0.63    41.00     1.00
max     17.00   199.00   122.00   99.00   846.00    67.10     2.42    81.00     1.00

从以上输出中,可以观察到Pima印度糖尿病数据集数据的统计摘要以及数据的维度。

类分布统计

在需要知道类值平衡的分类问题中,类分布统计量非常有用,知道类别值的分布很重要,因为如果无涯教程的类别分布高度不平衡,即一个类别比其他类别具有更多的观察值,那么在ML项目的数据准备阶段可能需要特殊处理。借助Pandas DataFrame,可以轻松地在Python中获得类分发。

from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
names = [preg, plas, pres, skin, test, mass, pedi, age, class]
data = read_csv(path, names=names)
count_class = data.groupby(class).size()
print(count_class)
Class
0 500
1 268
dtype: int64

从上面的输出中,可以清楚地看到,类别0的观察次数几乎是类别1的观察次数的两倍。

属性相关性

两个变量之间的关系称为相关。在统计数据中,最常用的相关系数计算方法是Pearson的相关系数。它可以具有三个值,如下所示:

  • 系数值= 1      - 它表示变量之间的完全正相关。

  • 系数值= -1    - 它表示变量之间完全负的相关性。

  • 系数值= 0     - 它表示变量之间完全没有相关性。

在将数据集用于ML项目之前,最好先检查一下数据集中属性的成对相关性,因为如果拥有高度相关的属性,则某些机器学习算法(例如线性回归和逻辑回归)的性能将很差,在Python中,借助Pandas DataFrame上的 corr()函数,可以轻松地计算数据集属性的相关矩阵。

from pandas import read_csv
from pandas import set_option
path = r"C:\pima-indians-diabetes.csv"
names = [preg, plas, pres, skin, test, mass, pedi, age, class]
data = read_csv(path, names=names)
set_option(display.width, 100)
set_option(precision, 2)
correlations = data.corr(method=pearson)
print(correlations)
preg   plas   pres   skin   test    mass    pedi    age    class
preg   1.00   0.13   0.14  -0.08   -0.07    0.02   -0.03   0.54    0.22
plas   0.13   1.00   0.15   0.06    0.33    0.22    0.14   0.26    0.47
pres   0.14   0.15   1.00   0.21    0.09    0.28    0.04   0.24    0.07
skin  -0.08   0.06   0.21   1.00    0.44    0.39    0.18  -0.11    0.07
test  -0.07   0.33   0.09   0.44    1.00    0.20    0.19  -0.04    0.13
mass   0.02   0.22   0.28   0.39    0.20    1.00    0.14   0.04    0.29
pedi  -0.03   0.14   0.04   0.18    0.19    0.14    1.00   0.03    0.17
age    0.54   0.26   0.24  -0.11   -0.04    0.04    0.03   1.00    0.24
class  0.22   0.47   0.07   0.07    0.13    0.29    0.17   0.24    1.00

上面输出中的矩阵给出了数据集中所有属性对之间的相关性。

属性分布偏差

偏度可以定义为假定为高斯分布,但在一个方向或另一个方向或向左或向右扭曲或偏移的分布。由于以下原因,检查属性的偏斜度是重要的任务之一-

  • 数据中存在偏度需要在数据准备阶段进行校正,以便从模型中获得更高的准确性。

  • 大多数ML算法均假设数据具有高斯分布,即钟形曲线数据的正态分布。

在Python中,无涯教程可以通过在Pandas DataFrame上使用 skew()函数轻松地计算每个属性的偏斜度。

from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
names = [preg, plas, pres, skin, test, mass, pedi, age, class]
data = read_csv(path, names=names)
print(data.skew())
preg   0.90
plas   0.17
pres  -1.84
skin   0.11
test   2.27
mass  -0.43
pedi   1.92
age    1.13
class  0.64
dtype: float64

从以上输出可以看到正偏或负偏。如果该值更接近于零,则显示较少的偏斜。

机器学习 - 数据统计 - 无涯教程网无涯教程网提供在进行机器学习项目时,通常无涯教程会忽略两个最重要的部分,分别是 数学 和 数据 。...https://www.learnfk.com/python-machine-learning/machine-learning-with-python-understanding-data-with-statistics.html

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

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

相关文章

GMP原理与调度

GMP原理和调度 1.Golang"调度器"的由来1.1单进程时代不需要调度器1.2多进程/线程时代有了调度器需求1.3协程来提高cpu利用率 1.Golang"调度器"的由来 1.1单进程时代不需要调度器 早期的操作系统每个程序就是一个进程,直到一个程序运行完毕&am…

Leetcode81. 搜索旋转排序数组 II

已知存在一个按非降序排列的整数数组 nums &#xff0c;数组中的值不必互不相同。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转 &#xff0c;使数组变为 [nums[k], nums[k1], ..., nums[n-1], nu…

C++ 网络编程项目fastDFS分布式文件系统(七)--qss样式表,项目文件的上传和下载。

目录 1 单例模式 2. 如何在单例类中存储数据? 3. QSS样式表 3.1 选择器类型 3.2 QSS的使用步骤 3.3 登录窗口设置 4. 客户端post方式上传数据 4.1 常用的四种方式 5. 上传协议 1 单例模式 #include<iostream> #include<vector> #include<mutex> …

Python加入Excel--生产力大提高|微软的全方面办公

Python作为一种功能强大的编程语言&#xff0c;已经逐渐成为了数据分析、机器学习、Web开发等领域的主流语言之一。而将Python集成到Excel中&#xff0c;则可以为Excel用户提供更加强大的数据处理和分析能力&#xff0c;同时也可以为Python开发者提供更加便捷的数据处理和可视化…

法雷奥Valeo EDI解决方案

法雷奥集团&#xff08;Valeo&#xff09;是一家总部位于法国的专业致力于汽车零部件、系统、模块的设计、开发、生产及销售的工业集团。公司业务涉及原配套业务及售后业务&#xff0c;是世界领先的汽车零部件供应商&#xff0c;为世界上所有的主要汽车厂提供配套。作为一家高科…

UI位置与布局

UI位置与布局 引言 发现UGUI的RectTransform定位还是很复杂的&#xff0c;感觉有必要详细了解一下 RectTransform 继承自Transform。他的local position由其他几个变量控制。建议不要直接设置position 目的是为了实现UI自动布局。这套方法将绝对定位&#xff0c;相对定位&a…

若依移动端Ruoyi-App 项目的后端项目入门

后端项目运行 运行报错 Error creating bean with name sysConfigServiceImpl: Invocation of init method failed 数据库创建了。 代码连接数据库地方了也匹配上了。但是还是报错。 分析 &#xff1a; 想起来我电脑从来没有安装过redis 下载安装redis到windows 链接&…

C++简单的检测内存泄漏的代码(visual studio)

看了网上很多都需要安装这个库那个库&#xff0c;就很无语&#xff0c;一个初学者&#xff0c;给段代码不好么&#xff0c;然后我偶然发现了微软官方给的代码&#xff0c;链接如下 使用 CRT 库查找内存泄漏 | Microsoft Learn 代码如下 // debug_malloc.cpp // compile by u…

量子非凡暴风去广告接口

>>>https://videos.centos.chat/lzffbf.php/?url 免费提供综合去广告接口&#xff0c;各位请友好调用

033 - date 和 time

date类型&#xff1a; 该DATE类型用于具有日期部分但没有时间部分的值。MySQL检索并DATE以 格式显示 值 。支持的范围是 到。 YYYY-MM-DD1000-01-019999-12-31 -- 创建表&#xff0c;字段类型是date&#xff1a; create table test_date01 (a date); -- 正确格式插入数据 in…

学习ts(十一)本地存储与发布订阅模式

localStorage实现过期时间 目录 准备 安装 npm i rollup typescript rollup-plugin-typescript2// tsconfig.json"module": "ESNext","moduleResolution": "node", "strict": false, // rollup.config.js import …

Python语言实现React框架

迷途小书童的 Note 读完需要 6分钟 速读仅需 2 分钟 1 reactpy 介绍 reactpy 是一个用 Python 语言实现的 ReactJS 框架。它可以让我们使用 Python 的方式来编写 React 的组件&#xff0c;构建用户界面。 reactpy 的目标是想要将 React 的优秀特性带入 Python 领域&#xff0c;…

元类(metaclass)

目录 一、引言 二、什么是元类 三、为什么用元类 四、内置函数exec(储备) 五、class创建类 5.1 type实现 六、自定义元类控制类的创建 6.1 应用 七、__call__(储备) 八、__new__(储备) 九、自定义元类控制类的实例化 一十、自定义元类后类的继承顺序 十一、练习 p…

mysql my.ini、登录、用户相关操作、密码管理、权限管理、权限表,角色管理

my.ini 配置文件格式 登录mysql mysql -h hostname | IP -P port -u username -p database -e “select 语句”&#xff1b; 创建用户、修改用户、删除用户 create user ‘zen’ identified by ‘密码’ ## host 默认是 % create user ‘zen’‘localhost’ identified by ‘密…

构建安全可信、稳定可靠的RISC-V安全体系

安全之安全(security)博客目录导读 2023 RISC-V中国峰会 安全相关议题汇总 说明&#xff1a;本文参考RISC-V 2023中国峰会如下议题&#xff0c;版权归原作者所有。

YARN资源管理框架论述

一、简介 为了实现一个Hadoop集群的集群共享、可伸缩性和可靠性&#xff0c;并消除早期MapReduce框架中的JobTracker性能瓶颈&#xff0c;开源社区引入了统一的资源管理框架YARN。 YARN是将JobTracker的两个主要功能&#xff08;资源管理和作业调度/监控&#xff09;分离&…

HarmonyOS/OpenHarmony(Stage模型)卡片开发应用上下文Context使用场景一

1.获取应用文件路径 基类Context提供了获取应用文件路径的能力&#xff0c;ApplicationContext、AbilityStageContext、UIAbilityContext和ExtensionContext均继承该能力。应用文件路径属于应用沙箱路径。上述各类Context获取的应用文件路径有所不同。 通过ApplicationContext…

VR法治警示教育:情景式课堂增强教育效果

VR法治警示教育平台是一款基于虚拟现实技术的在线教育平台&#xff0c;旨在通过模拟真实场景和互动体验&#xff0c;向公众普及法律知识&#xff0c;提高公民的法律意识和素养。该平台采用先进的虚拟现实技术&#xff0c;将用户带入一个逼真的仿真环境&#xff0c;让用户身临其…

【广州华锐互动】VR沉浸式体验红军长征路:追寻红色记忆,传承红色精神

在历史的长河中&#xff0c;长征无疑是一段充满艰辛和英勇的伟大征程。为了让更多的人了解这段历史&#xff0c;我们利用虚拟现实&#xff08;VR&#xff09;技术&#xff0c;为您带来一场沉浸式的体验&#xff0c;重温红军万里长征的壮丽篇章。 一、踏上长征之路 戴上VR眼镜&a…

RocketMQ教程-(6-5)-运维部署-Promethus Exporter

介绍​ Rocketmq-exporter 是用于监控 RocketMQ broker 端和客户端所有相关指标的系统&#xff0c;通过 mqAdmin 从 broker 端获取指标值后封装成 87 个 cache。 警告 过去版本曾是 87 个 concurrentHashMap&#xff0c;由于 Map 不会删除过期指标&#xff0c;所以一旦有 la…