基本语法—scaler.fit_transform()、train_test_split()、sklearn.preprocessing.OrdinalEncoder
目录一、scaler.fit_transform()二、train_test_split()三、sklearn.preprocessing.OrdinalEncoder一、scaler.fit_transform()我在以前的文章写过,StandardScaler类是一个用来讲数据进行归一化和标准化的类。而所谓归一化和标准化,即应用下列公式:使得新的X数据集方差为1,均值为0。而fit_trans
目录
三、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)
更多推荐
所有评论(0)