您可以使用您在训练时使用的同一 MinMaxScaler() 对象来转换您的单个实例。这是一个例子。
# training data
X_train = np.array([[1, 2], [3, 4], [5, 6]])
y_train = np.array([1, 0])
# scaler
scaler = MinMaxScaler().fit(X_train)
缩放X_train:
X_train_scaled = scaler.transform(X_train)
使用 X_train_scaled 和 y_train 训练模型 ...
预测新样本np.array([7, 8]):
new_sample = np.array([7, 8]).reshape(1, -1) # because the scaler expects a 2D array
scaler.transform(new_sample) # pass this to model.predict()
编辑:
最小-最大归一化的工作原理:
以下转换应用于(Wikipedia Link)的每个特征:
我们会将其应用于X_train
X_train = np.array([[1, 2], [3, 4], [5, 6]])
array([[1, 2],
[3, 4],
[5, 6]])
# min, max of each feature
mn = np.min(X_train, axis=0) # array([1, 2])
mx = np.max(X_train, axis=0) # array([5, 6])
计算缩放版本:
(X_train - mn) / (mx - mn)
array([[0. , 0. ],
[0.5, 0.5],
[1. , 1. ]])
以上匹配结果:
scaler = MinMaxScaler().fit(X_train)
X_train_scaled = scaler.transform(X_train)
array([[0. , 0. ],
[0.5, 0.5],
[1. , 1. ]])
当您提供新的输入向量时,应使用上述 mn 和 mx 值应用相同的转换
new_smaple = np.array([7, 8]).reshape(1, -1)
(new_sample - mn) / (mx - mn)
array([[1.5, 1.5]])
这匹配scaler.transform(new_sample)的输出
此外,您可以使用 scaler.data_min_ 和 scaler.data_max_ 从拟合的 MinMaxScaler 对象中提取最小值、最大值,这将匹配上述 mn 和 mx。