目录

数据清洗

1、重复观测处理

​2、缺失值处理

删除法

替换法

插补法

3、异常值处理

删减特征

1. 去除唯一属性

数据查看

特征缩放

一、为什么要特征数据缩放?

二、特征缩放常用的方法

1、归一化(Normalization)

2、标准化(Standardization)

相同点及其联系


数据清洗

        在数据处理过程中,一般都需要进行数据的清洗工作,如数据集是 否存在重复、是否存在缺失、数据是否具有完整性和一致性、数据中是 否存在异常值等。

1、重复观测处理

import pandas as pd
import numpy as npdata=pd.DataFrame([[8.3,6],[9.3,4],[6,8],[3,1],[3,1]])
# 重复观测的检测
print('数据集中是否存在重复观测:\n',any(data.duplicated()))

# 删除重复项
data.drop_duplicates(inplace = True)
# 重复观测的检测
print('数据集中是否存在重复观测:\n',any(data.duplicated()))
print(data)

2、缺失值处理

        一般而言,当遇到缺失值(Python中用NaN表示)时,可以采用三 种方法处置,分别是删除法、替换法和插补法。
  • 删除法

import pandas as pd
import numpy as npdata=pd.DataFrame([[8.3,6,],[9.3,4,],[6,8,8],[5,6],[3,1,8]],columns=('a','b','c'))
# 缺失观测的检测
print('数据集中是否存在缺失值:\n',any(data.isnull()))
print(data)# 删除法之变量删除
data.drop(["c"],axis =1 ,inplace=True)
print(data)

# 删除法之记录删除
data=data.dropna(axis=0,how='any')

解析:

​​​​​1、删除全为空值的行或列

data=data.dropna(axis=0,how='all')   #行

data=data.dropna(axis=1,how='all')   #列

2、删除含有空值的行或列

data=data.dropna(axis=0,how='any')   #行

data=data.dropna(axis=1,how='any')   #列

函数具体解释:

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
函数作用:删除含有空值的行或列

axis:维度,axis=0表示index行,axis=1表示columns列,默认为0

how:"all"表示这一行或列中的元素全部缺失(为nan)才删除这一行或列,"any"表示这一行或列中只要有元素缺失,就删除这一行或列

thresh:一行或一列中至少出现了thresh个才删除。

subset:在某些列的子集中选择出现了缺失值的列删除,不在子集中的含有缺失值得列或行不会删除(有axis决定是行还是列)

inplace:刷选过缺失值得新数据是存为副本还是直接在原数据上进行修改。

  •  替换法

# 替换法之前向替换
#data.fillna(method = 'ffill')
# 替换法之后向替换
#data.fillna(method = 'bfill')
#替换法之补平均数
#data['c']=data['c'].fillna(data['c'].mean())
#替换法之补众数
#data['c']=data['c'].fillna(data['c'].mode())
#替换法之补中位数
data['c']=data['c'].fillna(data['c'].median())
print(data)

  •  插补法

插值法是利用已知点建立合适的插值函数,未知值由对应点xi求出的函数值f(xi)近似代替

三、(数据分析)-数据清洗----缺失值处理__23__的博客-CSDN博客

3、异常值处理

4、特征编码处理

5、特征创建

删减特征

1. 去除唯一属性

唯一属性通常是一些id属性,这些属性并不能刻画样本自身的分布规律,所以简单地删除这些属性即可。


数据查看

  • 查看行列: data.shape
  • 查看数据详细信息: data.info(),可以查看是否有缺失值
  • 查看数据的描述统计分析: data.describe(),可以查看到异常数据
  • 获取前/后10行数据: data.head(10)、data.tail(10)
  • 查看列标签: data.columns.tolist()
  • 查看行索引: data.index
  • 查看数据类型: data.dtypes
  • 查看数据维度: data.ndim
  • 查看除index外的值: data.values,会以二维ndarray的形式返回DataFrame的数据
  • 查看数据分布(直方图): seaborn.distplot(data[列名].dropna())

特征缩放

一、为什么要特征数据缩放?

有特征的取值范围变化大,影响到其他的特征取值范围较小的,那么,根据欧氏距离公式,整个距离将被取值范围较大的那个特征所主导。

为避免发生这种情况,一般对各个特征进行缩放,比如都缩放到[0,1],以便每个特征属性对距离有大致相同的贡献。

作用:确保这些特征都处在一个相近的范围。

优点:1、这能帮助梯度下降算法更快地收敛,2、提高模型精

直接求解的缺点:
1、当x1 特征对应权重会比x2 对应的权重小很多,降低模型可解释性
2、梯度下降时,最终解被某个特征所主导,会影响模型精度与收敛速度
3、正则化时会不平等看待特征的重要程度(尚未标准化就进行L1/L2正则化是错误的)

哪些机器学习算法不需要(需要)做归一化?

概率模型(树形模型)不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、RF。而像Adaboost、SVM、LR、Knn、KMeans之类的最优化问题就需要归一化。

二、特征缩放常用的方法

1、归一化(Normalization)

  • 数值的归一,丢失数据的分布信息,对数据之间的距离没有得到较好的保留,但保留了权重。
  • 1.小数据/固定数据的使用;2.不涉及距离度量、协方差计算、数据不符合正态分布的时候;3.进行多指标综合评价的时候。

将数值规约到(0,1)或(-1,1)区间。

一个特征X的范围[min,max]

import pandas as pd
import numpy as npdata=pd.DataFrame([[8.3,6],[9.3,4],[6,8],[3,1]])
print(data)data[0]=(data[0]-data[0].min())/(data[0].max()-data[0].min())
data[1]=(data[1]-data[1].min())/(data[1].max()-data[1].min())
print(data)

结果:

2、标准化(Standardization)

  • 数据分布的归一,较好的保留了数据之间的分布,也即保留了样本之间的距离,但丢失了权值
  • 1.在分类、聚类算法中,需要使用距离来度量相似性;2.有较好的鲁棒性,有产出取值范围的离散数据或对最大值最小值未知的情况下。

将数据变换为均值为0,标准差为1的分布切记,并非一定是正态的。

其中μ为所有样本数据的均值,σ为所有样本数据的标准差。

先求均值(mean)

再求方差(std)

import numpy as np
from sklearn.preprocessing import StandardScalerdata=np.array([[2,2,3],[1,2,5]])
print(data)
print()scaler=StandardScaler()
# fit函数就是要计算这两个值
scaler.fit(data)
# 查看均值和方差
print(scaler.mean_)
print(scaler.var_)
# transform函数则是利用这两个值来标准化(转换)
X=scaler.transform(data)
print()
print(X)

结果:

大家可以用以上公式进行验证一下

这两组数据的均值是否为0,方差(σ2)是否为1

相同点及其联系

  • 归一化广义上是包含标准化的,以上主要是从狭义上区分两者。本质上都是进行特征提取,方便最终数据的比较。都是为了缩小范围,便于后续的数据处理。
  • 加快梯度下降,损失函数收敛; 提升模型精度; 防止梯度爆炸(消除因为输入差距过大而带来的输出差距过大,进而在反向传播的过程当中导致梯度过大,从而形成梯度爆炸)

机器学习——数据的预处理(总结大全)相关推荐

  1. 机器学习中,对于数据的预处理是否是测试集和训练集一起进行?

    转载自:https://www.zhihu.com/question/312639136 机器学习中,对于数据的预处理是否是测试集和训练集一起进行? 最近在尝试训练和应用模型,遇上一个问题,就是针对数 ...

  2. Python数据处理工具 ——Pandas(数据的预处理)

    0.前言 本文将介绍强大的数据处理模块Pandas,该模块可以帮助数据分析师轻松地解决数据的预处理问题,如数据类型的转换.缺失值的处理.描述性统计分析.数据的汇总等. 通过本章内容的学习,读者将会掌握 ...

  3. 第四章 数据的预处理与特征构建(续)

    申请评分卡模型 数据的预处理与特征构建(续) 课程简介:逻辑回归模型的特征需要是数值型,因此类别型变量不能直接放入模型中去,需要对其进行编码.此外,为了获取评分模型的稳定性,建模时需要对数值型特征做分 ...

  4. matlab 数据白化,“matlab对Excel表格数据预处理“急求FastICA 的源程序 matlab,包括数据的预处理(中心化和白化),注释详细点,谢谢!...

    急求FastICA 的源程序 matlab,包括数据的预处理(中心化和白化),注释详细点,谢谢! % function [Ahat2, shat, n_iteration Test] = nc_fas ...

  5. Amazon评论数据的预处理代码(Positive Negative)

    Amazon评论数据的预处理代码,用于情感分析,代码改自 https://github.com/PaddlePaddle/Paddle/tree/develop/demo/quick_start/da ...

  6. 数据的预处理与特征构建(申请评分卡模型)

    数据的预处理工作可以有效处理缺失值与异常值,从而增强模型的稳定性: 而特征构建工作则可以将信息从字段中加以提炼,形成有业务含义的优异特征 评分卡使用策略: 1.进件量较大,规则无法满足更细的切分需要: ...

  7. 机器学习:分类模型大全

    1. 逻辑回归 逻辑回归是一种经典的二元分类模型,适用于数据线性可分的场景.它的核心思想是将样本通过一个线性函数映射到一个实数范围内,并通过一个sigmoid函数将其映射到0-1之间,从而得到样本属于 ...

  8. 大数据领域机器学习或推荐系统数据集大全

    数据集汇总 一.免费大数据存储库的网站 1.深度学习数据集收集网站 http://deeplearning.net/datasets/** 收集大量的各深度学习相关的数据集,但并不是所有开源的数据集都 ...

  9. 类别型数据的预处理方法

    在机器学习过程中,我们往往需要对数据进行预处理.根据数据的取值情况,我们可以把数据总体分为两大类:类别型数据和数值型数据. 对于数值性变量,通常不需要对其进行编码处理.而如何处理类别型数据是一个难题. ...

  10. 人工智能-机器学习-深度学习-电子书大全

    MATLAB函数速查手册(修订版)-邓薇, R的极客理想--工具篇 (数据分析技术丛书)-张丹 著, R语言与网站分析 (数据分析技术丛书)-李明著, R语言实战 (图灵程序设计丛书)-Robert ...

最新文章

  1. AI工程师成长记 - 工作方法!
  2. LeetCode 75. Sort Colors--Python解法
  3. DBvisualizer free 9.2.10 升级pro版本
  4. 【JUC并发编程06】多线程锁 (公平锁和非公平锁,死锁,可重锁)
  5. C 语言资源大全中文版
  6. Linq中的group by多表多字段,Sum求和
  7. .NET2.0和microsoft新知识体系-ASP.NET 2.0新特性
  8. Jenkins动态部署方案
  9. Web 前端开发框架收集
  10. Layer:layui.util.timeAgo 使用
  11. bat脚本_获取管理员权限
  12. 如何用吹风机计算机主机清理,用吹风机吹电脑里的灰尘可以吗?
  13. QT的下载与安装(QT5.9.1)
  14. 百度3D地球,高清地图!地形混合!
  15. qt无边框窗体的移动
  16. 阿里发布内部(面试官)题库:2022年Java社招岗(正式版)面试题
  17. 2021年陕西柿子种植现状及出口情况分析:出口量下滑明显[图]
  18. 七天学会NodeJS——第一天
  19. u盘被写保护?几行代码轻松搞定
  20. 自动扫雷c语言,ctypes

热门文章

  1. 汉字转拼音的代码-转
  2. 利用自己的祖源成分结果画祖源成分饼图
  3. Ace Admin安装配置教程
  4. 在 Windows 10 中映射网络驱动器
  5. Bodymovin插件的使用
  6. Java 实现 植物大战僵尸 小游戏【附源码】
  7. 高清 GJB-5000B,2021最新版发布,软件能力成熟度模型
  8. 让人头疼的吃鸡外挂,一起来逆向分析一波
  9. 西门子S7-200的PLC,CPU224XP的模拟量接线怎样接
  10. [kuangbin带你飞]专题四 最短路练习