如何使用pickle进行序列化

在我开发完下面的程序后,一位前辈建议我不要将机器学习程序包含在后端。我该如何使用pickle文件来实现这一点?

from flask import Flask,render_template,url_for,requestimport pandas as pdimport picklefrom sklearn.naive_bayes import MultinomialNBfrom sklearn.externals import joblibapp = Flask(__name__)@app.route('/')def home():    return render_template('home.html')@app.route('/predict',methods=['POST'])def predict():    df= pd.read_csv("YoutubeSpamMergedData.csv")    df_data = df[["CONTENT","CLASS"]]    # 特征和标签    df_x = df_data['CONTENT']    df_y = df_data.CLASS    # 使用CountVectorizer提取特征    corpus = df_x    cv = TfidfVectorizer(ngram_range=[1,2])    X = cv.fit_transform(corpus) # 拟合数据    from sklearn.model_selection import train_test_split    X_train, X_test, y_train, y_test = train_test_split(X, df_y, test_size=0.33, random_state=42)    # 朴素贝叶斯分类器    from sklearn.naive_bayes import MultinomialNB    clf = MultinomialNB()    clf.fit(X_train,y_train)    acc = clf.score(X_test,y_test)    # 保存模型的替代用法    # ytb_model = open("naivebayes_spam_model.pkl","rb")    # clf = joblib.load(ytb_model)    if request.method == 'POST':        comment = request.form['comment']        data = [comment]        vect = cv.transform(data).toarray()        my_prediction = clf.predict(vect)    return render_template('result.html',prediction = my_prediction, accuracy = acc)if _name_ == '__main__':    app.run(debug=True)


回答:

你应该离线训练MultinomialNB分类器并将其保存到文件中。然后在你的Flask后端加载模型文件来预测请求数据。

# 训练分类器模型 from sklearn.externals import joblibfrom sklearn.naive_bayes import MultinomialNBclf = MultinomialNB()clf.fit(X, y)joblib.dump(clf, 'filename.pkl') # flask后端classifier = joblib.load("filename.pkl")@app.route("/predict", methods=["POST"])def predict():    # 获取vect    result = classifier.predict(vect)    return result

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注