我们是否可以保存经过部分训练的机器学习模型,然后重新加载并从保存点进行训练?

时间:2019-02-15 15:27:23

标签: machine-learning scikit-learn

我想知道有什么方法可以部分保存Scikit-Learn机器学习模型并再次重新加载以从以前保存的角度进行训练?

2 个答案:

答案 0 :(得分:0)

当将数据集拟合到Scikit学习机器学习模型时,将对其进行训练,并假定已准备好将其用于预测目的。通过训练一个具有100个样本的模型并使用它,然后再回到模型并为其再拟合50个样本,您将不会变得更好,但会对其进行重建。 如果您的目的是建立模型并使其在与更多样本交互时更强大,那么您将考虑实时条件,例如使用卡尔曼过滤器映射环境的移动机器人。

答案 1 :(得分:0)

对于像Scikitlearn这样的用于情感分析的模型,我怀疑您需要保存两个重要的内容:1)您的模型; 2)您的向量化器。 请记住,训练模型后,您的单词将由长度为N的向量表示,该向量是根据单词的总数定义的。 下面是我保存的测试模型和test-vectorizer的一部分,以便以后使用。

保存模型

import pickle 
pickle.dump(vectorizer, open("model5vectorizer.pickle", "wb"))
pickle.dump(classifier_fitted, open("model5.pickle", "wb"))

在新脚本(.py)中加载模型

import pickle
model = pickle.load(open("model5.pickle", "rb"))
vectorizer = pickle.load(open("model5vectorizer.pickle", "rb"))

测试您的模型

sentence_test = ["Results by Andutta et al (2013), were completely wrong and unrealistic."]

使用VECTORIZER(model5vectorizer.pickle)!!

sentence_test_data = vectorizer.transform(sentence_test) 
print("### sentence_test ###")
print(sentence_test)
print("### sentence_test_data ###")
print(sentence_test_data)
# OBS-1: VECTOR HERE WILL HAVE SAME LENGTH AS BEFORE :)
# OBS-2: If you load the default vectorizer or a different one, then you may see the following problems
# sklearn.exceptions.NotFittedError: TfidfVectorizer - Vocabulary wasn't fitted.
# # ValueError: X has 8 features per sample; expecting 11
result1 = model.predict(sentence_test_data) # using saved vectorizer from calibrated model
print("### RESULT ###")
print(result1)

希望有帮助。

此致

安达塔(Andutta)