归一化与标准化

特征预处理是机器学习中的重要步骤,包括特征缩放如归一化和标准化,特征编码,特征降维以及处理缺失值等。归一化是将数据映射到[0,1]区间,而标准化则转换数据至均值为0,标准差为1的分布。这两种方法常用于改善模型性能,归一化在数据无异常值时适用,标准化在大数据场景下更稳定。
摘要由CSDN通过智能技术生成

一、什么是特征预处理?

特征预处理是指在应用机器学习算法之前对原始特征进行转换或处理的过程。它旨在改善数据的表示方式,使得特征更适合用于机器学习模型的训练和预测。

特征预处理的目标可以包括以下几个方面:

  1. 特征缩放(Feature Scaling):将特征的值进行缩放,使得它们具有相似的数值范围。常见的特征缩放方法包括标准化(Standardization)和归一化(Normalization)。标准化通过减去均值并除以标准差,使得特征具有均值为0、标准差为1的分布;归一化将特征缩放到一个特定的范围,例如[0, 1]。
  2. 特征编码(Feature Encoding):将一些非数值型的特征转换为数值型特征,以便机器学习算法能够处理。常见的特征编码方法包括独热编码(One-Hot Encoding)和标签编码(Label Encoding)。
  3. 特征降维(Feature Dimensionality Reduction):减少特征的数量,保留最重要的特征信息,从而减少计算复杂度和降低噪声的影响。常见的特征降维方法包括主成分分析(Principal Component Analysis,PCA)和线性判别分析(Linear Discriminant Analysis,LDA)等。
  4. 处理缺失值(Handling Missing Data):处理数据中的缺失值,可以通过删除缺失值的样本、填充缺失值(例如使用均值或中位数进行填充)或使用插值等方法。
  5. 特征构造(Feature Construction):基于已有的特征创建新的特征,以提供更有信息量的表达。例如,通过组合特征、进行数学变换或创建交互项等方式。

通过适当的特征预处理,可以提高机器学习算法的性能和效果,使得模型能够更好地从数据中学习并做出准确的预测。预处理的具体方法选择取决于数据的特点、任务的要求和所使用的机器学习算法的特点。

二、归一化

1. 定义

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

2. 公式

X ′ = ( X − m i n ) / ( m a x − m i n ) X'=(X-min)/(max-min) X=(Xmin)/(maxmin)

X ′ ′ = X ′ ∗ ( m x − m i ) + m i X''=X'*(mx-mi)+mi X′′=X(mxmi)+mi

其中,X 是原始特征值,min 是特征的最小值,max 是特征的最大值,x’ 是归一化后的特征值,mx,mi分别为指定区间值默认mx为1,mi为0,X’'是归一化的最终特征值。

3. API
  • sklearn.preprocessing.MinMaxScaler(feature_range=?)
    • feature_range:归一化后特征值的区间
  • MinMaxScaler.fit_transform()
4.代码演示
from sklearn.preprocessing import MinMaxScaler
import pandas as pd

# 1.导入数据
data=pd.read_csv("./data/dating.txt")


# 2.归一化处理
def minmax_demo():
    # 实例化对象,归一化处理后的特征值在0~1之间
    transfer = MinMaxScaler(feature_range=(0,1))
    # 对"milage","Liters","Consumtime"这三列特征值进行归一化处理
    ret_data = transfer.fit_transform(data[["milage","Liters","Consumtime"]])
    print("归一化之后的数据为:\n",ret_data)

minmax_demo()
5. 归一化总结

最大值最小值是变化的,另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景

三、标准化

1. 定义

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

2. 公式

X ′ = ( x − m e a n ) / σ X'=(x-mean)/σ X=xmean/σ

其中,x 是原始特征值,mean 是特征的均值,σ 是特征的标准差,X’ 是标准化后的特征值。

3. API
  • sklearn.preprocessing.StandardScaler(feature_range=?)
    • feature_range:归一化后特征值的区间
  • StandardScaler.fit_transform()
4. 代码演示
from sklearn.preprocessing import StandardScaler
import pandas as pd

# 1.导入数据
data=pd.read_csv("./data/dating.txt")

# 2.标准化处理
def standard_demo():
    # 实例化转换器
    transfer = StandardScaler()
    # 对"milage","Liters","Consumtime"这三列特征值进行标准化处理
    ret_data = transfer.fit_transform(data[["milage","Liters","Consumtime"]])
    print("标准化之后的数据为:\n",ret_data)
    print("每一列的平均值为:\n",transfer.mean_)
    print("每一列的标准差为:\n", transfer.var_)

standard_demo()
5. 标准化总结

在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值