sklearn中的数据预处理和特征工程

本文介绍了在机器学习中数据预处理的重要性,特别是对于不同量纲的特征。讨论了两种常用的数据归一化方法:最值归一化和均值方差归一化,以及它们的应用场景和优缺点。还提到了sklearn库中的StandardScaler用于数据标准化。建议在使用随机梯度下降法的模型中应用这些方法,但不适用于树形结构模型。
摘要由CSDN通过智能技术生成

 

背景:由于特征之间的量纲不同,使得不同的指标之间没有可比性,不处于同一数量级的指标,无法进行分析。

解决方案:将所有的数据映射到同一个尺度中。

重要性:处于区间范围差异较大的特征,当采用随即梯度下降法学习时,学习速率相比同一区间更低。

适用于:通过梯度下降法求解的模型,如:线性回归,逻辑回归,SVM,神经网络等。

不适用于:树形结构

一、最值归一化 normalization

即:把所有数据映射到0-1之间

适用于:分布有明显边界的情况,如:学生分数/图像像素

缺点:受outlier影响较大,如:收入

python实现:

import numpy as np
x = np.random.randint(0,100,size=100)

(x - np.min(x)) / (np.max(x) -  np.min(x))

X = np.random.randint(0,100,(50,2))

X = np.array(X, dtype=float)

# X[:,0]第一列,第一个特征
X[:,0] = (X[:,0] - np.min(X[:,0])) / (np.max(X[:,0]) - np.min(X[:,0]))

X[:,1] = (X[:,1] - np.min(X[:,1])) / (np.max(X[:,1]) - np.min(X[:,1]))

# n个特征时
for i in range(0,n):
    X[:,i] = (X[:,i]-np.min(X[:,i])) / (np.max(X[:,i] - np.min(X[:,i])))

二、均值方差归一化 standardization

即:把所有数据归一到均值为0方差为1的分布中

适用于:分布无明显边界,有可能存在极端数据值 (除分数/像素等之外,基本都考虑有均值方差归一化)

python实现:

X2 = np.array(np.random.randint(0,100,(50,2)),dtype=float)

for i in range(0,2):
    X2[:,i]=(X2[:,i]-np.mean(X2[:,i])) / np.std(X2[:,i])

三、在sklearn中专门的用来数据归一化的方法:StandardScaler

from sklearn.preprocessing import StandardScaler
standardScaler = StandardScaler()

standardScaler.fit(X_train)
standardScaler.mean_
standardScaler.scale_   

X_train_standard = standardScaler.transform(X_train)
X_test_standard = standardScaler.transform(X_test)

注:测试数据集的均值和方差,依然使用训练集的

 

参考:https://www.cnblogs.com/juanjiang/p/10948849.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值