问题:SVR模型在训练过程中进行预测时,使用测试集和验证集效果不错。但是训练好之后,加载模型进行预测时,不同的输入都预测出相同的结果。
解决方法:归一化问题,预测时要与训练时用同一个scale_fit归一化。
训练时归一化
scale = StandardScaler()
scale_x = scale.fit(x)
x = scale_x.transform(x)
预测时用同一个scale_x归一化,再预测
x_ test= scale_x.transform(x_test)
clf = joblib.load(svr_save_path)
clf.predict(x_test)
一般使用方法:
a) 先用fit
scaler = preprocessing.StandardScaler().fit(X)
这一步可以得到scaler,scaler里面存的有计算出来的均值和方差
b) 再用transform
scaler.transform(X)
这一步再用scaler中的均值和方差来转换X,使X标准化
c) 那么在预测的时候, 也要对数据做同样的标准化处理,即也要用上面的scaler中的均值和方差来对预测时候的特征进行标准化
注意:测试数据和预测数据的标准化的方式要和训练数据标准化的方式一样, 必须用同一个scaler来进行transform
StandardScaler()使用方法参考链接:https://blog.csdn.net/u011734144/article/details/84066784