标准化、规范化以及正则化是机器学习中三个常用的数据处理方法,其中标准化和规范化解决不同单位和比例的数据间的差异,用于数据缩放;而正则化主要解决模型的过拟合问题。今天我们主要来学习标准化与规范化,通过原理分析和Python案例来综合学习。文中使用加利福尼亚州住房价格分布数据,其数据分布直方图如下:
Standardization:标准化
标准化是重新调整特征的过程,使其满足零均值单位方差的高斯分布。其转换公式如下:
标准化的代码实现可以调用sklearn库中preprocessing.Standardscaler的api接口,其具体实现如下:
from sklearn import preprocessing
# Get column names first
names = df.columns
# Create the Scaler object
scaler = preprocessing.StandardScaler()
# Fit your data on the scaler object
scaled_df = scaler.fit_transform(df)
scaled_df = pd.DataFrame(scaled_df, columns=names)
标准化处理的结果
Normalization:规范化
规范化简称为Min-Max缩放,通过变换将数据范围缩放在0和1之间(如果有负值则为-1到1)。其数学公式如下:
规范化的代码实现可以调用sklearn库中preprocessing.normalize的api接口,其具体实现如下:
from sklearn import preprocessing
import numpy as np
# Get dataset
df = pd.read_csv("https://storage.googleapis.com/mledudatasets/california_housing_train.csv", sep=",")
# Normalize total_bedrooms column
x_array = np.array(df['total_bedrooms'])
normalized_X = preprocessing.normalize([x_array])
规范化处理结果
特征缩放优缺点
优点:
特征缩放广泛用于机器学习算法中,主要有以下几点:
缺点:
规范化处理对数据异常值很敏感,处理之后数据中的异常值会消失,因此如果数据集中存在异常值,则这是一种不好的做法。 而标准化不受数据限制,所以一般我们采用标准化来处理数据。