处理数值型特征
多种原始数值型数据转换为机器学习算法所需特征的方法。
1. 特征的缩放
用sklearn的MinMaxScaler来缩放一个特征数组,将一个数值型特征的值缩放到两个特定的值之间。
import numpy as np
from sklearn import preprocessing
#创建特征
feature = np.array([[-500.5],
[-100.1],
[0],
[100.1],
[900.9]])
#创建缩放器
minmax_scale = preprocessing.MinMaxScaler(feature_range=(0,1))
#缩放特征的值
scaled_feature = minmax_scale.fit_transform(feature)
#查看特征
scaled_feature
—>
array([[0. ],
[0.28571429],
[0.35714286],
[0.42857143],
[1. ]])
2. 特征的标准化
对一个特征进行转换,使其平均值为0,标准差为1.
import numpy as np
from sklearn import preprocessing
#创建特征
x = np.array([[-1000.1],
[-200.2],
[500.5],
[600.6],
[9000.9]])
#创建缩放器
scaler = preprocessing.StandardScaler()
#转换特征
standardized = scaler.fit_transform(x)
#查看特征
standardized
—>
array([[-0.76058269],
[-0.54177196],
[-0.35009716],
[-0.32271504],
[ 1.97516685]])
3. 归一化观察值
对观察值的每一个特征进行缩放,使其拥有一致的范数。
使用normalizer并指定norm参数:
import numpy as np
from sklearn.preprocessing import Normalizer
#创建特征
features = np.array([[0.5,0.5],
[1.1,3.4],
[1.5,20.2],
[1.63,34.4],
[10.9,3.3]])
#创建归一化器
normalizer = Normalizer(norm= "l2")
#转换特征特征
normalizer.transform(features)
—>
array([[0.70710678, 0.70710678],
[0.30782029, 0.95144452],
[0.07405353, 0.99725427],
[0.04733062, 0.99887928],
[0.95709822, 0.28976368]])
Normalizer提供三个范数选项,默认值是欧式范数(Euclidean norm,L2范数):
∣ ∣ x ∣ ∣ 2 = x 1 2 + ⋅ ⋅ ⋅ + x n 2 ||x||_2 = \sqrt {x_1^2+···+x_n^2}