特征预处理
provides several common utility functions and transformer classes to change raw feature vectors into a representation that is more suitable for the downstream estimators.
- 特征的单位或者大小相差较大,或者某特征的方差相比其他的特征要大出几个数量级,容易影响(支配)目标结果,使得一些算法无法学习到其它的特征,所以要进行特征预处理(即无量纲化)。
无量纲化包括归一化和标准化:
- 归一化
把数据映射到[0, 1]之间,最大值与最小值非常容易受异常点影响
X^{\prime}=\frac{x-m i n}{m a x-m i n} \qquad X^{\prime \prime}=X^{\prime} *(m x-m i)+m i
api:sklearn.preprocessing.MinMaxScaler (feature_range=(0,1)… )
- MinMaxScalar.fit_transform(X)
- X:numpy array格式的数据[n_samples,n_features]
- 返回值:转换后的形状相同的array
- 标准化
通过对原始数据进行变换把数据变换到均值为0,标准差为1范围内
X^{\prime}=\frac{x-\text { mean }}{\sigma}
sklearn.preprocessing.StandardScaler( )- 处理之后每列来说所有数据都聚集在均值0附近标准差差为1
- StandardScaler.fit_transform(X)
- X:numpy array格式的数据[n_samples,n_features]
- 返回值:转换后的形状相同的array
代码示例:
1 2 3 4 5 6 7 8 9 |
data = pd.read_csv("data.txt") # 1、实例化一个转换器类 transfer = StandardScaler() # 2、调用fit_transform data = transfer.fit_transform(data[['milage','Liters','Consumtime']]) print("标准化的结果:\n", data) print("每一列特征的平均值:\n", transfer.mean_) print("每一列特征的方差:\n", transfer.var_) |