自定义函数用例
假设您有一个已知值范围在 0-255 之间的图像数组,您希望在 0-1 之间缩小,但您不想使用 StandardScaler,因为并非所有图像的值都为 0 和其中有 255 个。
简单来说。没有人在测试中得分 100%,但您仍然希望在 0-100 之间进行评分。
from sklearn.preprocessing import FunctionTransformer
import numpy as np
data = np.array([[100, 2], [240, 80], [139, 10], [10, 150]])
def div255(X): return X/255 #encode
def mult255(X): return X*255 #decode
scaler = FunctionTransformer(div255, inverse_func=mult255)
# --- encode ---
mutated = scaler.fit_transform(data)
"""
array([[0.39215686, 0.00784314],
[0.94117647, 0.31372549],
[0.54509804, 0.03921569],
[0.03921569, 0.58823529]])
"""
# --- decode ---
scaler.inverse_transform(mutated)
"""
array([[100., 2.],
[240., 80.],
[139., 10.],
[ 10., 150.]])
"""
专业提示
确保将这些自定义函数定义在程序的其余部分可以引用它们的位置(例如辅助函数)。特别是当需要inverse_transform 你的预测和/或编码新样本时!