我正在使用sklearn中的MinMaxScaler
模型对模型的特征进行归一化。
training_set = np.random.rand(4,4)*10
training_set
[[ 6.01144787, 0.59753007, 2.0014852 , 3.45433657],
[ 6.03041646, 5.15589559, 6.64992437, 2.63440202],
[ 2.27733136, 9.29927394, 0.03718093, 7.7679183 ],
[ 9.86934288, 7.59003904, 6.02363739, 2.78294206]]
scaler = MinMaxScaler()
scaler.fit(training_set)
scaler.transform(training_set)
[[ 0.49184811, 0. , 0.29704831, 0.15972182],
[ 0.4943466 , 0.52384506, 1. , 0. ],
[ 0. , 1. , 0. , 1. ],
[ 1. , 0.80357559, 0.9052909 , 0.02893534]]
现在我想使用同样的缩放器来对测试集进行归一化:
[[ 8.31263467, 7.99782295, 0.02031658, 9.43249727],
[ 1.03761228, 9.53173021, 5.99539478, 4.81456067],
[ 0.19715961, 5.97702519, 0.53347403, 5.58747666],
[ 9.67505429, 2.76225253, 7.39944931, 8.46746594]]
不过我不想一直使用scaler.fit()
来拟合训练数据。有没有办法将Scaler保存起来,然后在以后的某个时间从另一个文件中加载它呢?
joblib.dump
被优化用于转储 sklearn 对象,因此创建的文件比 pickle 更小,后者会将对象及其所有依赖项一起转储。 - Ivan Vegnerpickle
的经验不好:它可能适用于短期导出,但长时间后,你必须处理协议版本(pickling的参数之一),我在加载旧的导出时遇到了错误。因此,我更喜欢这个答案。 - Vojta F