【问题标题】:Handle unseen values when Encoding / Transforming with sklearn使用 sklearn 进行编码/转换时处理看不见的值
【发布时间】:2020-09-06 18:18:47
【问题描述】:
如果有一个超出标准归一化范围的新值,编码器/转换器会做什么?
因为生产数据中可能会出现新值。
例如min-max-scaler
【问题讨论】:
标签:
machine-learning
scikit-learn
【解决方案1】:
每个编码器/转换器以不同的方式处理看不见的值/超出训练数据范围的值。
特别是对于MinMaxScaler,它将给出 (0, 1) 范围之外的值。
文档示例:
>>> from sklearn.preprocessing import MinMaxScaler
>>> data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
>>> scaler = MinMaxScaler()
>>> print(scaler.fit(data))
MinMaxScaler()
>>> print(scaler.data_max_)
[ 1. 18.]
>>> print(scaler.transform(data))
[[0. 0. ]
[0.25 0.25]
[0.5 0.5 ]
[1. 1. ]]
>>> print(scaler.transform([[2, 2]]))
[[1.5 0. ]]
您可以看到2 超出了第一个特征的范围,因此它会缩放超出范围的多少(从训练数据中学习)并为您提供适当的值。
请参阅here 以了解有关不同预处理技术的更多信息。