【发布时间】:2018-01-07 01:11:06
【问题描述】:
我在名为“training_net.py”的脚本上创建并保存了一个神经网络。 按照 sklearn 网站 (http://scikit-learn.org/stable/modules/neural_networks_supervised.html#tips-on-practical-use) 的建议,我对训练集进行了缩放,并对测试集使用了相同的缩放器。
现在我有一个名为“prediction.py”的脚本,它将参数向量和在“training_net.py”中创建的神经网络作为输入,并将分类作为输出。
我怀疑我在“prediction.py”中输入的缩放比例。我想我应该使用在“training_net.py”中使用的相同转换来缩放输入,但我不明白如何从使用的缩放器中获取转换参数。
当我执行 scaler.get_params() 时,我只会得到以下信息: {'copy': True, 'with_mean': True, 'with_std': True}
这是一个小代码摘录,以更好地说明我的意思。
training_net.py
#scale training and test data
scaler = StandardScaler()
scaler.fit(training_data)
training_data = scaler.transform(training_data)
test_data = scaler.transform(test_data)
clf.fit(training_data, training_label)
nn_name = "NN.pkl"
joblib.dump(clf, nn_name)
clf = joblib.load(nn_name)
print clf.score(test_data, test_label)
prediction.py
model_name = "NN.pkl"
clf = joblib.load(model_name)
#need to scale input_parameters before predicting!
#?
print clf.predict(input_parameters)
【问题讨论】:
-
为什么不腌制 StandardScaler 呢?
-
另外,你需要的是属性,而不是参数。请参阅documentation 了解将从数据中学习的可用属性。
-
那是我的问题,如何腌制它。无论如何,由于我不知道 pickle 是什么意思,所以我使用关键字“pickle standardscaler”进行了搜索,并在 Stackoverflow 本身中找到了答案。谢谢!你是对的,我需要属性,而不是参数,感谢您的澄清。答案在这里:stackoverflow.com/questions/35944783/…
-
在您的代码中,您已经在使用
joblib.dump腌制clf对象。使用相同的技术来保存 CountVectorizer。 -
其实这个答案就是你说的。打印可用属性。你能写下你的评论作为答案吗?然后我可以确认并关闭问题。
标签: python scikit-learn