如何保存fit后的标准化工具函数StandardScaler

我们在训练模型时,常常需要标准化数据,常用的是sklearn.preprocessing模块中的 StandardScaler。而在我们测试数据时,也需要在同样的尺度下进行预测。但我们并不想重新导入原来训练的数据来fit 然后预测,这个时候我们可以保存scaler 然后导入直接标化自己需要预测的数据

fit 自己的标化器

# 导入模块
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler as SS
import pickle

#导入训练数据
allmatrix = pd.read_csv(mydata, header=0, index_col=0, low_memory=True).iloc[:,:2080].values

target = np.loadtxt(mylabel)

# 标准化你的训练数据局
scaler = SS()
allmatrix = scaler.fit_transform(allmatrix)

# 保存标化器
pickle.dump(scaler, open('scaler.pkl','wb'))

。。。。训练模型,保存模型

预测自己数据前的标化

如果我们要用该模型来预测自己数据,那么我们的数据必须用标化到相同的尺度。这时候不需要导入原来的训练数据如allmatrix来重新fit,可以直接导入保存的scaler.pkl 来标化测试数据:

# load your data
testdata = pd.read_csv(args.matrix, header=0, index_col=0, low_memory=True).values

# scaler your data,标化你自己的数据
scaler = pickle.load(open('scaler.pkl', 'rb'))
allmatrix = scaler.transform(allmatrix)

print("allmatrix shape: {}".format(allmatrix.shape))

# transform your data to tensor
x = tf.convert_to_tensor(allmatrix)

# load the model for prediction
network = tf.keras.models.load_model('your_model.h5', compile=True)

# predict your data
prediction=network.predict(x)
print(prediction)

# save the prediction result
np.savetxt("prediction_result.txt", prediction, fmt="%.4f")

你可能感兴趣的:(机器学习,Tensorflow)