sklearn.preprocessing的部分用法

本文介绍sklearn.preprocessing.StandardScaler类及scale函数的使用方法,通过实例演示如何对数据进行标准化处理,使其均值为0,标准差为1。

类:sklearn.preprocessing.StandardScaler(copy=Truewith_mean=Truewith_std=True)

通过减去均值并缩放到单位变量来标准化特征。


公式:(x-mean)/std,mean为均值,std为方差,计算时对每个属性/每列分别进行。结果是对于每个属性/每列的数据服从均值为0,方差为1的分布。

实现方式有两种:

(1)使用sklearn.preprocessing.StandardScaler()类,使用该类可以保存训练数据集的参数(scale_,mean_,var_),然后直接使用其对象转换测试数据集

>>>import numpy as np
>>>from sklearn.preprocessing import preprocessing
>>>scaler=preprocessing.StandardScaler()

>>>iiii=np.array([[1.,-1.,2.],[2.,0.,0.],[0.,1,-1.]])
>>>jjjj=scaler.fit(iiii)
>>>jjjj
StandardScaler(copy=True,with_mean=True,with_std=True)
>>>jjjj.scale_
array([1., 0., 0.333333333])
>>>jjjj.var_
array([ 0.66666667,  0.66666667,  1.55555556])
>>>jjjj.transform(iiii)
array([[ 0.        , -1.22474487,  1.33630621],
       [ 1.22474487,  0.        , -0.26726124],
       [-1.22474487,  1.22474487, -1.06904497]])
使用该对象对测试数据进行标准化
>>>jjjj.transform([[-1., 1., 0.]])
array([[-2.44948974,  1.22474487, -0.26726124]])
 


(2)使用sklearn.preprocessing.scale()函数,可以直接对给定数据进行标准化

>>>iiii=np.array([[1.,-1.,2.],[2.,0.,0.],[0.,1,-1.]])
>>>jjjj=preprocessing.scale(iiii)
>>>jjjj
array([[ 0.        , -1.22474487,  1.33630621],
       [ 1.22474487,  0.        , -0.26726124],
       [-1.22474487,  1.22474487, -1.06904497]])
#处理后,数据的均值和方差
>>>jjjj.mean(axis=0)
array([0. , 0., 0.])
>>>jjjj.std(axis=0)
array([1. , 1., 1.])



从`sklearn.preprocessing`导入`StandardScaler`主要用于数据标准化,因为距离计算对尺度敏感,所以通常需要预先对数据进行标准化处理。 ### 使用方法 以下是使用`StandardScaler`进行数据标准化的基本步骤和代码示例: ```python from sklearn.preprocessing import StandardScaler # 假设 X 是待标准化的数据 # X 应该是一个二维数组,形状为 (n_samples, n_features) # 这里简单创建一个示例数据 import numpy as np X = np.array([[1, 2], [3, 4], [5, 6]]) # 创建 StandardScaler 对象 scaler = StandardScaler() # 拟合数据并进行转换 X_scaled = scaler.fit_transform(X) print("标准化后的数据:") print(X_scaled) ``` 上述代码首先从`sklearn.preprocessing`导入`StandardScaler`,然后创建了一个示例数据`X`。接着创建`StandardScaler`对象`scaler`,使用`fit_transform`方法对数据`X`进行拟合和转换,得到标准化后的数据`X_scaled`。 ### 注意事项 - **数据类型**:输入的数据`X`必须是二维数组,形状为`(n_samples, n_features)`,即每一行代表一个样本,每一列代表一个特征。 - **缺失值**:如果数据中存在缺失值,需要在使用`StandardScaler`之前进行处理,否则可能会导致错误。 - **与其他步骤结合**:在机器学习流程中,`StandardScaler`通常作为预处理步骤,可以与其他估计器(如分类器)结合使用。可以使用`Pipeline`来将多个步骤组合在一起,示例如下: ```python from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler from sklearn.svm import SVC # 创建 Pipeline pipeline = Pipeline([ ('scaler', StandardScaler()), # 标准化 ('svc', SVC()) # 支持向量机分类器 ]) # 假设 X 是特征数据,y 是标签数据 # 训练 Pipeline pipeline.fit(X, y) # 进行预测 predictions = pipeline.predict(X) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值