sklearn进行数据预处理 — 归一化/标准化/正则化

本篇博客主要借鉴的是http://www.cnblogs.com/chaosimple/p/4153167.html
最近在学习sklearn,写算法基本上都会用到标准化, 数据标准化一共有三种,废话不多说,看具体的代码:

#encoding:utf-8
 
#sklearn数据标准化,数据标准化有三种
#第一种是Z-Score,或者去除均值和方差缩放
from  sklearn import preprocessing
import numpy as np
x = np.array([[1.,-1.,2.],
            [2.,0.,0.],
            [0.,1.,-1.]])
x_scaled = preprocessing.scale(x)
x_scaled.mean(axis=0)
x_scaled.std(axis=0)
# 使用sklearn.preprocessing.StandardScaler类,
# 使用该类的好处在于可以保存训练集中的参数(均值、方差)
# 直接使用其对象转换测试集数据。
scaler = preprocessing.StandardScaler().fit(x)
scaler.mean_
scaler.std_
scaler.transform(x)  #跟上面的结果是一样的
 
#第二种是将属性缩放到一个指定范围,也是就是(x-min)/(max-min)
#依赖于preprocessing中的MinMaxScaler类
x_train = np.array([[1.,-1.,2.],
            [2.,0.,0.],
            [0.,1.,-1.]])
 
min_max_scaler = preprocessing.MinMaxScaler()
x_train_minmax = min_max_scaler.fit_transform(x_train)
print(x_train_minmax)
# 当然,在构造类对象的时候也可以直接指定最大最小值的范围: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
 
#第三种是正则化Normalization
 
x = np.array([[1.,-1.,2.],
            [2.,0.,0.],
            [0.,1.,-1.]])
x_normalized = preprocessing.normalize(x,norm='l2')
print(x_normalized)
 
# 可以使用processing.Normalizer()类实现对训练集和测试集的拟合和转换
normalizer = preprocessing.Normalizer().fit(x)
print(normalizer)
normalizer.transform(x)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容