| 机器学习sklearn的学习与运用——数据预处理 — 标准化(来自Educoder)相关知识原始数据存在的几个问题:不一致、重复、含噪声、维度高。数据挖掘中,数据预处理包含数据清洗、数据集成、数据变换和数据归约几种方法,在这里不过多叙述预处理方法细节。接下来将简单介绍,如何通过调用 sklearn 中的模块进行数据预处理。 sklearn.preprocessing 模块提供很多公共的方法,将原始不规整的数据转化为更适合分类器的具有代表性的数据。一般说来,使用标准化后的数据集训练学习模型具有更好的效果。 数据标准化的方法有很多种,常用的有“最小—最大标准化”、“Z-score标准化”等等。经过上述标准化处理,各属性值都处于同一个数量级别上,可以进行综合数据分析。 Z-score 标准化 这种方法基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。将 A 的原始值 x 使用 Z-score 标准化到 x’。Z-score 标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况,其公式为:
  
 新数据=(原数据-均值)/标准差 sklearn.preprocessing.scale函数,可以直接将给定数据进行标准化。
  标准化处理后,数据的均值和方差:
 
  sklearn.preprocessing.StandardScaler类实现了 Transformer 接口,可以保存训练数据中的参数(均值 mean_、缩放比例 scale_),并能将其应用到测试数据的标准化转换中。
 
  将标准化转换器应用到新的测试数据:
 
  min-max 标准化
 min-max 标准化方法是对原始数据进行线性变换。设 minA 和 maxA 分别为属性 A 的最小值和最大值,将 A 的一个原始值 x 通过 min-max 标准化,映射成在区间[0,1]中的值 x’,其公式为:
  
 新数据=(原数据-极小值)/(极大值-极小值) sklearn.preprocessing.MinMaxScaler将属性缩放到一个指定的最大和最小值(通常是1-0)之间。MinMaxScaler 中可以通过设置参数feature_range=(min, max)指定最大最小区间。其具体的计算公式为:
  
 X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))X_scaled = X_std * (max - min) + min
  将标准化缩放,应用到新的测试数据:
 
 
 代码实现:from sklearn.datasets import fetch_california_housing
from sklearn import preprocessing
dataset = fetch_california_housing("./step4/")
X_full, y = dataset.data, dataset.target
X = X_full[:, [0, 5]]
def getMinMaxScalerValue():
    '''
    对特征数据X进行MinMaxScaler标准化转换,并返回转换后的数据前5条
    返回值:
    X_first5 - 数据列表
    '''
    X_first5 = []
    
    
    min_max_scaler = preprocessing.MinMaxScaler()
    X_first5 = min_max_scaler.fit_transform(X)
    
    return X_first5[:5]  
def getScaleValue():
    '''
        对目标数据y进行简单scale标准化转换,并返回转换后的数据前5条
        返回值:
        y_first5 - 数据列表
        '''
    y_first5 = []
    
    
    y_first5 = preprocessing.scale(y)
    
    return y_first5[:5]  
def getStandardScalerValue():
    '''
    对特征数据X进行StandardScaler标准化转换,并返回转换后的数据均值和缩放比例
    返回值:
    X_mean - 均值
    X_scale - 缩放比例值
    '''
 
    
    
    scaler = preprocessing.StandardScaler().fit(X)
    
    return scaler.mean_,scaler.scale_
 以上实验来自Educoder平台Python机器学习软件包Scikit-Learn的学习与运用第二关实例“数据预处理 — 标准化” 直接放在自己电脑上运行会报错,写这篇文章的目的主要是记录标准化处理的方法以及对应的步骤。谢谢! |