社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

AWS机器学习之实验性数据分析:建模前的数据清洗和准备

健谈始于戊戌年 • 3 年前 • 381 次点击  

前文中,我们已经介绍了如何接入、转换和存储数据。但是此时的数据依旧千头万绪,并没有清晰地表带出其中的含义。例如,这些数据可能存在缺失,或者有噪音有偏差,或者并不是全部的数据。所以,为了能够更好的理解数据,我们还需要清洗数据。这样才能更加有效地构建机器学习模型。这就是本文要介绍的内容。

 

1.利用描述性统计(Descriptive Statistics)更好的理解数据

 

在清洗数据之前,我们需要做的第一件事就是利用描述性统计更好地理解数据。描述性统计可以帮助我们洞察数据,更加有效的预处理数据,为机器学习模型做好准备。通常,描述性统计可以分为以下一些类型。

 

  • 总体统计(Overall Statistics):包括数据的行列数。由于这些信息和数据的维度有关,所以很重要。例如,从其中可以看出数据是否有过多的特征。这就说明有高维度的问题,会导致模型表现变差。

  • 多元统计(Multivariate Statistics):是指变量之间的相关性。这个我们在后面还会详细介绍。

  • 特征统计(Attribute Statistics):这个主要针对数值型变量,包括平均值、标准差、方差、最大值和最小值等参数。

 

2. 多元统计

 

2.1相关性


由于数据之间的相关性会影响模型表现,所以发现这些相关性很重要。在有多个变量或者特征(Features)的时候,我们需要查看这些变量之间的相关性。如果两个变量之间的相关性很高,就会影响模型的表现。当变量之间的相关性过高,且应用于同一模型预测某一反映变量(Response Variable),就会带来问题。例如,模型的损失不收敛。所以,我们要注意数据中那些高度相关的变量。

 

2.2散点图

                           

我们可以利用散点图直观地表现数值型变量的关系。当一个数据集中有两个以上数值型变量的时候,我们可以用散点图画出它们的关系。这样就可以发现变量之间的特殊关系。例如,在下图中,我们可以看出,有一些变量之间具有强线性关系,而另一些变量之间则没有强线性关系。

 

2.3相关性矩阵


尽管散点图可以直观的展示出变量之间的关系,但是如何量化变量之间的线性关系呢?这就需要用到相关性矩阵。它可以定量地表达变量之间的线性关系,说明线性相关性的强弱。

 

相关性介于-1和+1之间。当相关性为+1时,说明两个变量之间完全正相关。或者可以说,变量Y和变量X同比例变化。当相关性为-1时,说明两个变量之间完全负相关。或者可以说,变量Y和变量X反比例变化。介于-1和+1之间的线性关系也可以用量化表达。如果相关性为0,则说明变量之间没有相关性。但是要特别强调,没有相关性并不代表没有关系。这里只是说这两个变量之间没有线性关系。

 

3.清洗数据


在理解了数据之后,我们可以开始清洗数据了。下面就来介绍这些内容。

 

3.1 标准化语言和语法

 

杂乱无章的数据有很多种形式。例如,我们的模型要求数据是英语,但事实上数据有很多种语言。而且可能还会有特殊字符、空格和乱码。因此,我们要对数据进行标注化操作。如果我们的模型要求是英语,那么就要确保数据是英语。

 

语法也有同样的问题。例如,我们可以把文本文件都改成小写字母。这样首字母大写和小写就没有区别了。


3.2 统一数据单位

 

数据中可能还会有单位的问题。例如长度可能是米,千米,英里等。这是一个常见问题,因为很多数据来源不同。当合并不同的数据集以后,就会出现这个问题。


 

3.3每一列只有一个特征

 

有时数据的问题会更加复杂。一列数据可能会包括不同的特征。例如同样是叫做测量值(Measurement)的一列,里面可能有温度,距离,时间等等数值。这种情况下,就要对数据变形,使每一列对应一个特征。


 

3.4异常值(Outlier)

 

另一个需要解决的是异常值问题。通常,数据中的异常值明显远离其他数据。由于这些数据包含了大量的信息,所以我们并不一定需要清洗它们。但是,它们的偏离会影响预测精度。因此,我们还是要注意这些异常值。



3.5缺失值

 

数据中总会有缺失值。例如,由于采集数据出错,数据中的某一列缺失。缺失值会增加解释数据关系的难度。因此,我们总要想办法解决缺失值。常用的办法包括

  • 删除含有缺失值的行或列。

  • 用平均值,0或者其他值代替缺失值。

但是这些方法也不是完美的,所以要针对对待缺失值的问题。总的来说,如果数据集比较小,不能删除数据,就只能选择一种替代缺失值的办法。这个被称为插补技术(Imputation Techniques)。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/120442
 
381 次点击