【问题标题】:get scaler transformation parameters from a different script从不同的脚本获取缩放器转换参数
【发布时间】: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


【解决方案1】:

正如 Vivek Kumar 在评论中回答的那样,腌制标准缩放器就足够了。

joblib.dump(scaler, "scaler.pkl")

在这里,您还可以找到我在第一次搜索中找不到的类似问题(和答案): How to store scaling parameters for later use

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多