目录

一、scaler.fit_transform()

 二、train_test_split()

 三、sklearn.preprocessing.OrdinalEncoder


一、scaler.fit_transform()

 我在以前的文章写过,StandardScaler类是一个用来讲数据进行归一化和标准化的类。
而所谓归一化和标准化,即应用下列公式:

使得新的X数据集方差为1,均值为0。

而fit_transform方法是fit和transform的结合,fit_transform(X_train) 意思是找出X_train的和,并应用在X_train上。即fit_transform(partData)对部分数据先拟合fit,找到该part的整体指标,如均值、方差、最大值最小值等等(根据具体转换的目的),然后对该partData进行转换transform,从而实现数据的标准化、归一化等等。

 二、train_test_split()

 基本用法:

X_train,X_test, y_train, y_test =sklearn.model_selection.train_test_split(train_data,train_target,test_size=0.4, random_state=0,stratify=y_train)
  • train_target:所要划分的样本结果
  •  train_data:所要划分的样本特征集
  • test_size:样本占比,如果是整数的话就是样本的数量
  • random_state:是随机数的种子。
  • 随机数种子:其实就是该组随机数的编号,在需要重复试验的时候,保证得到一组一样的随机数。比如每次都填1,其他参数一样的情况下你得到的随机数组是一样的。但填0或不填,每次都会不一样。

 

来说一下stratify,它是为了保持split前类的分布。比如有1000个数据,750个属于A类,250个属于B类。如果train_test_split(... test_size=0.20, stratify = y_all), 那么split之后数据如下: 
training: 800个数据,其中600个属于A类,15个属于200B类。 
testing: 200个数据,其中150个属于A类,50个属于B类。 用了stratify参数,training集和testing集的类的比例是 A:B= 3:1,等同于split前的比例(750:250)。通常在这种类分布不平衡的情况下会用到stratify。

 三、sklearn.preprocessing.OrdinalEncoder

(*, categories='auto', dtype=<class 'numpy.float64'>)

将分类特征编码为整数数组。该转换器的输入应为整数或字符串之类的数组,表示分类(离散)特征所采用的值。要素将转换为序数整数。这将导致每个要素的一列整数(0到n_categories-1)。

fit(X[, y]):将序数编码器拟合到 X。

 fit_transform(X[, y]):适应数据,然后对其进行转换。

 get_params([deep]):获取此估计器的参数。

 inverse_transform(X):将数据转换回原始表示形式。

 set_params(**参数):设置此估计器的参数。

transform(X):将 X 转换为序号代码。
例如:

import pandas as pd
from sklearn.preprocessing import OrdinalEncoder
X = pd.DataFrame([['male','high'],
                  ['female','high'],
                  ['male','low'],
                  ['female','medium'],
                  ['female','medium'],
                  ['female','low']],
                 columns=['sex','income'])
                 
X = OrdinalEncoder().fit_transform(X)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐