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