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

在进行机器学习项目时,通常无涯教程会忽略两个最重要的部分,分别是 数学 和 数据 。这是因为知道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.mzph.cn/news/58080.shtml

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

相关文章

【JSDocvscode】使用JSDoc、在vscode中开启node调试、使用vscode编写运行Python程序

JSDoc JSDoc是JavaScript的一种注释语法,同时通过JSDoc注释也可以规避js弱类型中不进行代码提示的问题 图形展示JSDoc的效果: 上述没有进行JSDoc,然后我们a点什么 是没有任何提示的 上述就是加上 JSDoc的效果 常用的 vscode 其实内置了 js…

每日后端面试5题 第八天

1.UDP和TCP协议的区别 1.UDP无连接,速度快,安全性低,适合高速传输、实时广播通信等。 2.TCP面向连接,速度慢,安全性高,适合传输质量要求高、大文件等的传输,比如邮件发送等。 (还…

Python爬虫框架之快速抓取互联网数据详解

概要 Python爬虫框架是一个能够帮助我们快速抓取互联网数据的工具。在互联网时代,信息爆炸式增长,人们越来越需要一种快速获取信息的方式。而Python爬虫框架就能够帮助我们完成这个任务,它可以帮助我们快速地从互联网上抓取各种数据&#xf…

MySQL数据库学习【基础篇】

📃基础篇 下方链接使用科学上网速度可能会更加快一点哦! 请点击查看数据库MySQL笔记大全 通用语法及分类 DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)DML: 数据操作语言,用来对数据库表中的…

【Java架构-包管理工具】-Maven进阶(二)

本文摘要 Maven作为Java后端使用频率非常高的一款依赖管理工具,在此咱们由浅入深,分三篇文章(Maven基础、Maven进阶、私服搭建)来深入学习Maven,此篇为开篇主要介绍Maven进阶知识,包含坐标、依赖、仓库、生…

8.29一日总结(uni-app)

1.UNI-APP课件uniapp (notion.site)https://secretive-echo-5b2.notion.site/uniapp-4963799e330b4af4b842ccee6e2f62e8 2.链接 a.UNI-APP官网 uni-app快速上手 | uni-app官网 (dcloud.net.cn) b.安装HBuilder: HBuilderX-高效极客技巧 (dcloud.io) b.微信小程序网址:微信开…

vue3下的密码输入框(antdesignvue)

参考:vue下的密码输入框 注意:这是个半成品,有些问题(输入到第6位的时候会往后窜出来一个空白框、光标位置会在数字前面),建议不采用下面这种方式,用另外的(画六个input框更方便) 效果预览 实现思路 制作6个小的正方形div 用一个input覆盖在6个div上 给input设置透明(…

2023年下半年抖音小店运营全攻略

每年618过后,7、8月份,都是电商淡季。 尤其是服装类目,很多商家都是直接躺平。 但是到了9月份,一是换季,二是碰上开学季,电商旺季就开始来了! 尤其是服装、文具、户外运营这些类目&#xff0…

行业报告|3D感知技术快速发展,打造“机器之眼”,助推各行业加速升级!

原创 | 文 BFT机器人 01 3D视觉感知全栈式平台,硬核实力蓄势待发 1.1 3D视觉感知为“机器之眼”,未来市场空间广阔 3D视觉感知技术充分弥补了2D成像技术的以上不足,可获取空间几何尺寸信息。 过去数十年2D成像技术蓬勃发展,分辨…

-9501 MAL系统没有配置或者服务器不是企业版(dm8达梦数据库)

dm8达梦数据库 -9501 MAL系统没有配置或者服务器不是企业版) 环境介绍1 环境检查2 问题原因 环境介绍 搭建主备集群时,遇到报错-9501 MAL系统没有配置或者服务器不是企业版 1 环境检查 检查dmmal.ini配置文件权限正确 dmdba:dinstall,内容正…

ChatGPT Prompting开发实战(一)

一、关于ChatGPT Prompting概述 当我们使用ChatGPT或者调用OpenAI的API时,就是在使用prompt进行交互,用户在对话过程中输入的一切信息都是prompt(提示词),当然工业级的prompt与人们通常理解的prompt可能不太一样。下面…

03 最长连续序列

最长连续序列 题解 哈希(O(n)) 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 题解 哈希(O(n)) class Solution { public:int long…

JVM运行时数据区

文章目录 JVM内存结构图1、运行时数据区域JDK 1.7JDK 1.81. 线程栈(虚拟机栈)2. 本地方法栈3. 程序计数器4. 方法区(元空间)5. 堆6、运行时常量池(Runtime Constant Pool)7、直接内存(Direct Me…

云计算——虚拟化中的网络架构与虚拟网络(文末送书)

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号:网络豆 座右铭:低头赶路,敬事如仪 个人主页: 网络豆的主页​​​​​ 目录 前期回顾 前言 一.网卡虚拟化 1.网卡虚拟化方法&…

基于 vue2 发布 npm包

背景:组件化开发需要,走了一遍发布npm包的过程,采用很简单的模式实现包的发布流程,记录如下。 项目参考:基于vue的时间播放器组件,并发布到npm_timeplay.js_xmy_wh的博客-CSDN博客 1、项目初始化 首先&a…

C语言练习题解析:挑战与突破,开启编程新篇章!(1)

💓博客主页:江池俊的博客⏩收录专栏:C语言刷题专栏👉专栏推荐:✅C语言初阶之路 ✅C语言进阶之路💻代码仓库:江池俊的代码仓库🎉欢迎大家点赞👍评论📝收藏⭐&a…

Vue项目直接报错

最近自己在做一个vue2项目,vue并不熟悉,所以求解!!! 通过命令:vue create app 创建项目,但打开后,浏览器直接报错,意思为:不能在模块外使用import语句(at ho…

多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测

多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测。 模型描…

框架分析(5)-Django

框架分析(5)-Django 专栏介绍Django核心概念以及组件讲解模型(Model)视图(View)模板(Template)路由(URLconf)表单(Form)后台管理&…

vue中bus的使用和涉及到的问题

创建一个js文件 import Vue from "Vue" export default new Vue 我们可以直接在要使用的页面中引用使用 import bus from /assets/js/eventBus.js;bus.$emit("info", "123") // 使用bus.$on("info", (val) > { // 接收console.l…