【问题标题】:Performing prediction in sklearn on pickled data在 sklearn 中对腌制数据执行预测
【发布时间】:2018-08-15 19:11:49
【问题描述】:

我正在尝试通过对 newsgroup20 数据集进行实验来学习。我的训练模型运行良好,预测部分是我遇到问题的地方。现在我要做的是将训练模型(使用pickle)保存在一个函数中,并在另一个函数中对腌制数据执行预测。我找到的所有教程都告诉我如何保存和加载泡菜文件,但没有告诉我如何提取 X_train 和 y_train。如果有人可以提供帮助,那就太好了。这是我的代码

def classifier(): 
    twenty_train = fetch_20newsgroups(subset='train', shuffle=True, random_state=42)
    X_train, X_test, y_train, y_test = train_test_split(twenty_train.data, twenty_train.target, test_size=0.4, random_state=0)

    naive_clf = Pipeline([('vect', CountVectorizer()),
                         ('tfidf', TfidfTransformer()),
                         ('clf', MultinomialNB()),
    ])
    naive_clf.fit(X_train, y_train)  
    filename = 'finalized_model.sav'
    pickle.dump(naive_clf, open(filename, 'wb'))


def predictions(): # need help in first 3 lines and last print statement

    loaded_model = pickle.load(open('finalized_model.sav', 'rb'))
    result = loaded_model.score(X_test, y_test)
    print(result)

    #parsing my file as string for prediction(works fine)
    with open("/home/ubuntu/Desktop/text_classifier/dataset/predict/file,txt", "r") as myfile:
        file=myfile.readlines()
        file = ''.join(file)

    print('belongs to class {} according to naive bayes'.format(twenty_train.target_names[loaded_model.predict([file])[0]]))`

【问题讨论】:

    标签: python-3.x machine-learning scikit-learn pickle


    【解决方案1】:

    当您使用 pickle 保存模型时,您只保存模型本身,而不保存用于训练的数据。所以如果你想用pickle加载数据,你需要单独保存。例如:

    data = {'train': X_train, 'target': y_train}
    with open('data.pkl', 'wb') as f:
        pickle.dump(data, f)
    
    with open('data.pkl', 'rb') as f:
        data = pickle.load(f)
    X_train = data['train']
    y_train = data['target']
    

    【讨论】:

    • 感谢您的快速回复,但我如何做到这一点?
    • 添加了一个例子。
    • 工作就像一个魅力。感谢您的回复
    猜你喜欢
    • 2017-08-29
    • 2020-09-01
    • 1970-01-01
    • 2018-10-15
    • 2018-08-11
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    相关资源
    最近更新 更多