day03——特征处理之特征预处理

文章介绍了特征预处理的重要性,特别是归一化和标准化在处理数据时的角色。通过sklearn库展示了如何使用MinMaxScaler进行归一化,将数据映射到[0,1]之间,以及如何使用StandardScaler进行标准化,确保数据集中在均值0和标准差1的范围内。标准化相对于归一化更具鲁棒性,适合大数据场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是特征预处理

特征的单位或者大小相差较大,或者某特征的方差相比其他的特征要大出几个数量级,容易影响目标结果,使得一些算法无法学习到其它的特征。所以需要通过转换函数将特征数据转换成更加适合算法模型的特征预处理,包括了对数值型数据进行归一化和标准化。

# 特征预处理 api
sklearn.preprocessing

归一化

定义:通过对原始数据进行变换把数据映射到(默认为[0,1])之间

API

# 实例化一个转换器类,映射范围[0,1]
sklearn.preprocessing.MinMaxScaler (feature_range=(0,1))
# 调用fit_transform
# X:numpy array格式的数据[n_samples,n_features]返回值:转换后的形状相同的array
MinMaxScalar.fit_transform(X)

实操

对 dating.txt 中的数据进行特征预处理

1,请自行建立 txt 文件并放入以下数据

milage,Liters,Consumtime,target 
40920,8.326976,0.953952,3 
14488,7.153469,1.673904,2 
26052,1.441871,0.805124,1 
75136,13.147394,0.428964,1 
38344,1.669788,0.134296,1

2,代码编写与运行

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

# 读取 txt 数据
data = pd.read_csv("dating.txt")
print(data)

# 实例化一个转换器类
transfer = MinMaxScaler(feature_range=(0, 1))

# 调用fit_transform
data = transfer.fit_transform(data[['milage','Liters','Consumtime']])
print("最小值最大值归一化处理的结果:\n", data)

但是归一化公式中需要用到数据的最大值和最小值,但是最大最小值容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景, 标准化可以优化这个问题。

标准化

定义:通过对原始数据进行变换把数据变换到均值为0,标准差为1范围内

API

sklearn.preprocessing.StandardScaler()
# 处理之后每列来说所有数据都聚集在均值0附近标准差差为1
StandardScaler.fit_transform(X)
# X:numpy array格式的数据[n_samples,n_features]返回值:转换后的形状相同的array

实操

同样对上述的 dating 文件数据进行特征预处理

import pandas as pd
from sklearn.preprocessing import StandardScaler

# 读取 txt 数据
data = pd.read_csv("dating.txt")
print(data)

# 实例化一个转换器类
transfer = StandardScaler()

# 调用fit_transform
data = transfer.fit_transform(data[['milage','Liters','Consumtime']])
print("标准化的结果:\n", data)
print("每一列特征的平均值:\n", transfer.mean_)
print("每一列特征的方差:\n", transfer.var_)

相比于归一化公式,对于标准化来说,如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,从而方差改变较小。适用于在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值