sklearn的预处理APIsklearn.preprocessing
所有预处理方法都在这个模块里面
通过对原始数据变化,映射到默认的[0,1]这个区间
数据变化后最终的数字是X"
目的是为了某一个特征不会对最终结果造成更大影响
MinMaxScaler(feature_range = (0,1)...)
: 每个特征会缩放到指定范围(默认[0,1])
-MinMaxScaler.fit_transform(x)
: X:numpy array格式的数据[n_samples,n_features]. 返回一个转换后相同形状的array
在特定场景下最大值和最小值 很容易受到异常点的影响,所以这种归一化的鲁棒性(反应产品稳定的词)较差,只适合传统精确小数据场景(平常应用中很少有这样的场景,所以也很少用归一化)。
通过对原始数据进行变换把数据变换到均值为0,标准差为1的范围内。
目的也是为了某一个特征数据不会对最终结果造成更大的影响。
标准化的APIsclkit-learn.preprocessing.StandardScaler
处理之后所有数据都聚集在均值为0附近标准差为1
StandardScaler.fit_transform(x)
X:numpy array格式数据,返回一个转换后相同形状的arrayStandardScaler.mean_
原始数据中每列特征的平均值StandardScaler.std_
原始数据每列特征的方差from sklearn.preprocessing import MinMaxScaler,StandarScaler
def ss():
std = StandarScaler()
data = std.fit_transform([[1,-1,3],[2,4,2],[4,6,-2]])
print(data)
if __name__ == "__main__":
ss()
相对于归一化来说,标准化可以有少量异常特征。在已有样本足够多的情况下很稳定,适合大数据场景
一般用pandas处理缺失值,sklearn也提供了方法,但是没有必要。
用pandas: dropna,fillna
时 空缺的数值必须是np.nan的格式。所以要用replace(“?”,np.nan)
先把数据转换一下。
imputer(missing_values='NaN',strategy='mean',axis='0')
:完成缺失值的插补
imputer.fit_transform(X)
X:numpy array格式数据,返回一个转换后相同形状的arrayfrom sklearn.preprocessing import imputer
import numpy #下面有np.nan格式的缺失值
def im():
#NaN, nan 都可以
im = Imputer(missing_value='NaN',strategy='mean',axis='0')
data= im.fit_transform([[1,2],[np.nan,3],[7,6]])
return None
if __name__ == "__main__":
im()
#今天感谢妈sir让我来到这个世界感受这么多的美好,希望在新的一岁里成家立业,学习更多的知识。