0


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

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

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

检查数据

知道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.00768.00768.00768.00768.00768.00768.00768.00768.00
mean     3.85120.8969.1120.5479.8031.990.4733.240.35
std      3.3731.9719.3615.95115.247.880.3311.760.48
min      0.000.000.000.000.000.000.0821.000.0025%1.0099.0062.000.000.0027.300.2424.000.0050%3.00117.0072.0023.0030.5032.000.3729.000.0075%6.00140.2580.0032.00127.2536.600.6341.001.00
max     17.00199.00122.0099.00846.0067.102.4281.001.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)
Class05001268
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.000.130.14-0.08-0.070.02-0.030.540.22
plas   0.131.000.150.060.330.220.140.260.47
pres   0.140.151.000.210.090.280.040.240.07
skin  -0.080.060.211.000.440.390.18-0.110.07
test  -0.070.330.090.441.000.200.19-0.040.13
mass   0.020.220.280.390.201.000.140.040.29
pedi  -0.030.140.040.180.190.141.000.030.17
age    0.540.260.24-0.11-0.040.040.031.000.24class0.220.470.070.070.130.290.170.241.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.13class0.64
dtype: float64

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

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


本文转载自: https://blog.csdn.net/w116858389/article/details/132510973
版权归原作者 Hi无涯教程 所有, 如有侵权,请联系我们删除。

“无涯教程-机器学习 - 数据统计”的评论:

还没有评论