官方文档地址
参考链接sklearn中文翻译地址:http://www.scikitlearn.com.cn/0.21.3/40/
这个模块的主要内容是数据的预处理:
- scaling:缩放化
- normalization:标准化
- binarization 二值化
- centering:中心化
API
Binarizer
sklearn.preprocessing.Binarizer(*, threshold=0.0, copy=True)
作用:将数据进行二值化,若是特征值(feature value)大于阈值(threshold)则将特征值赋值为1否则为0
参数
- threshold:阈值,默认为0
- copy:默认为True
设置为False就会将x原值进行替换为二分值(即只为0、1),
设置为True则不会替换x原值
示例
>>>from sklearn.preprocessing import Binarizer
>>>X = [[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]]
>>>transformer = Binarizer().fit(X)
>>>transformer
>Binarizer()
>>>transformer.transform(X)
array([[1., 0., 1.],
[1., 0., 0.],
[0., 1., 0.]])
LabelEncoder
sklearn.preprocessing.LabelEncoder
作用:将目标label编码成[0-n_classes-1]范围的值
示例
>>> from sklearn import preprocessing
>>> le = preprocessing.LabelEncoder()
>>> le.fit([1, 2, 2, 6])
LabelEncoder()
>>> le.classes_
array([1, 2, 6])
>>> le.transform([1, 1, 2, 6])
array([0, 0, 1, 2]...)
>>> le.inverse_transform([0, 0, 1, 2])
array([1, 1, 2, 6])
也可以对非数值型的对象进行编码(这些对象必须可相互比较)转化为数值型标签
>>> le = preprocessing.LabelEncoder()
>>> le.fit(["paris", "paris", "tokyo", "amsterdam"])
LabelEncoder()
>>> list(le.classes_)
['amsterdam', 'paris', 'tokyo']
>>> le.transform(["tokyo", "tokyo", "paris"])
array([2, 2, 1]...)
>>> list(le.inverse_transform([2, 2, 1]))
['tokyo', 'tokyo', 'paris']
MinMaxScaler
sklearn.preprocessing.MinMaxScaler(feature_range=(0, 1), *, copy=True)
作用:将特征缩放到指定范围中,默认是在0-1之间
若是给MinMaxScaler提供一个明确的feature_range=(min,max),完整公式是:
X_std = (X - X.min(axis=0))/(X.max(axis=0)-X.min(axis=0))
#max 是feature_range中的max,min是feature_range中的min
X_scaled = X_std * (max - min) + min
参数
- feature_range:设置缩放范围,默认是(0,1)
- copy:和上面一样,不赘述
示例
- 将数据矩阵缩放到[0-1]范围
>>> 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)
>>> X_train_minmax
array([[ 0.5 , 0. , 1. ],
[ 1. , 0.5 , 0.33333333],
[ 0. , 1. , 0. ]])
#第二种写法
>>>min_max_scaler = preprocessing.MinMaxScaler(feature_range=(0,1))
>>>X_train_minmax = min_max_scaler.fit(X_train_minmax)
>>>X_train_minmax.transform(X_train_minmax)
array([[ 0.5 , 0. , 1. ],
[ 1. , 0.5 , 0.33333333],
[ 0. , 1. , 0. ]])