from sklearn.preprocessing import MinMaxScaler # 归一化
from sklearn.preprocessing import StandardScaler # 标准化
from sklearn.impute import SimpleImputer
import numpy as np
# 归一化
# x'=(x-min)/(max-min)
mm = MinMaxScaler(feature_range=(0, 3)) # 范围
data = mm.fit_transform([[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]])
print(data)
# 使某一个特征不会对结果造成太大影响
# 注意在特定场景下非常容易受异常点影响,所以这种方法鲁棒性较差,
# 只适合传统精确小数据场景。
# 标准化
# x'=(x-mean)/sigma
ss = StandardScaler()
data = ss.fit_transform([[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]])
print(data)
# 在已有样本足够过的情况下比较稳定,适合现代嘈杂数据场景
# 缺失值
si = SimpleImputer(missing_values=np.NAN, strategy='mean')
data=si.fit_transform([[1,2],[np.NAN,3],[7,6]])
print(data)