机器学习数据预处理与特征工程、归一化

目录

数据集分割

特征工程:预处理

最小最大归一化

标准化

归一化处理的API


数据集分割

数据集分割使用train_test_split函数,api为:from sklearn.model_selection import train_test_split

from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=1)

参数设置的分别为,首先传入数据特征值x,数据标签值y,设置测试集在数据集中占的比例test_size,0.2就表示测试集占百分之20,训练集占80%,设置随机数种子random_state=一个数。

分割完的数据集返回值有四个,分为训练数据集和测试数据集。训练数据集对于模型是已知的,测试数据集是模型看不到的数据集,是未知的,用于评估在训练集上训练完毕的模型性能如何。设置x_train, x_test, y_train, y_test四个变量来接收,顺序不要变。

x_train:表示训练集的特征数据        x_test:表示测试集的特征数据

y_train:表示训练集的标签值            y_test:表示测试集的标签值

特征工程:预处理

什么是数据归一化,为什么要进行数据归一化?

数据归一化的通俗解释就是将原始特征数据全部归一到一个区间内:如[0,1]区间。

如上图,原始数据集从90到2都有,分布很散,经过归一化的处理后,均分布在[0,1]区间。

为什么要进行数据归一化?

特征的单位或者大小相差较大,或者某特征的方差相比其他的特征要大出几个数量级,容易影响(支配)目标结果,使得一些算法无法学习到其他特征。

归一化主要分为最小最大归一化,标准化。

最小最大归一化

原始数据如下:

最小最大化的过程:

首先指定归一化的区间,如归一化到[0,1]区间。

找到特征n那一列的最大特征值与最小特征值:如特征1的最大特征值为90,最小特征值为60

对特征1的每一个特征进行转换,公式如下,将每一个特征的值转换为:该特征值-min/max-min

每一列特征都做这样的处理,得到转换后的特征:

至此第一步已经完成了,接下来对结果进行检查,如果所有的特征值已经被归一化到指定区间,则归一化完成。如果不满足进行第二步:令区间左端值为mi,右端值为mx。[0,1]:mi=0,mx=1        对于不满足的特征值,进行如下处理:

至此,最小最大归一化全部完成。所有的特征值都会被归一化到你指定的区间。

标准化

标准化是另一种归一化的方式,它在实际的应用中比最小最大化要更为广泛,原因是最小最大化在归一化的过程中有两个特殊的值,分别为特征最大值和特征最小值,如果这两个值是噪声数据(干扰数据),那么对归一化的影响就比较大,效果则不太好,标准化没有这个影响。

标准化的步骤比较简单:

第一步求出特征n这一列所有特征的平均值

第二步求解特征n这一列的特征标准差。

运用公式进行归一化:

比如特征1这一列,那么我先求出这一列的平均值,再求出每个特征值的标准差,对每一个特征值进行:特征值-特征列平均值/特征列标准差。再换特征2列,以此类推。

标准化受异常值的影响较小,适合现代嘈杂大数据场景。

归一化处理的API

#最小-最大化
from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()

X_scaled = scaler.fit_transform(X)		
	
#标准化
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()

X_standardized = scaler.fit_transform(X)   


#如果特征数据经过数据分割 则:
x_train_standardized=scaler.fit_transform(x_train)
x_test_standardized=scaler.fit_transform(x_test)

  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值