在机器学习领域,成功训练一个模型只是工作的一部分。为了能够在不同环境中部署和使用这些模型,我们需要一种有效的方式来保存和加载它们。这变得尤为重要,特别是当我们想要在实际环境中使用经过训练的机器学习模型时。在这方面,Python的Joblib库为我们提供了一个简单而强大的解决方案
1. Joblib库
Joblib是一个用于在Python中进行并行计算和高性能计算的库,最初是为了处理大规模的科学计算中的数据集而设计的。它的主要目标是提供一种简单且高效的方式来执行计算密集型的任务,尤其是对于涉及大型NumPy数组的操作, 这个库的强大之处在于其易用性和对数据的有效处理能力。Joblib提供了用于并行执行函数的工具,使得在多核处理器上加速计算成为可能。除了并行计算,Joblib还提供了对内存映射、函数参数反射等功能的支持,在这里我们主要介绍如何利用Joblib库保存模型并调用模型
# GitHub网址
https://github.com/joblib/joblib
2. 安装Joblib库
pip install joblib
3. 保存模型
contents = data['review'].tolist()
df = data_cleaning(contents)
data['分词去停用词结果'] = df
from sklearn.feature_extraction.text import TfidfVectorizer
# 将tf-idf模型命名为tfidf_model并训练
tfidf_model = TfidfVectorizer(stop_words=None, max_features=3000, min_df=2, analyzer='char')
trained_tfidf = tfidf_model.fit(data['分词去停用词结果'])
这段代码完成了文本数据的清洗、分词和停用词处理,然后构建了一个TF-IDF模型提取文本特征
import joblib
# 保存模型
joblib.dump(trained_tfidf , 'TF-IDF.pkl')
使用Joblib库的dump函数将一个已经训练好的TF-IDF模型(trained_tfidf)保存到名为'TF-IDF.pkl'的文件中,后续就可以直接调用这个模型,而不需要训练
4. 加载模型
import joblib
# 加载 TF-IDF 模型
tfidf_vectorizer = joblib.load('TF-IDF.pkl')
使用joblib.load函数加载之前保存的模型文件
5. 完整利用Joblib调用模型演示
import tkinter as tk
from tkinter import ttk
import joblib
import jieba
from sklearn.feature_extraction.text import TfidfVectorizer
# 加载保存的 MultinomialNB 模型
model = joblib.load('Best.pkl')
# 加载 TF-IDF 模型
tfidf_vectorizer = joblib.load('TF-IDF.pkl')
# 加载停用词列表
stopwords = set(open('哈工大中文停用词.txt', 'r', encoding='utf-8').readlines())
# 创建主窗口
root = tk.Tk()
root.title("外卖评论情感模型预测工具")
# 创建标签
label = ttk.Label(root, text="输入数据:")
label.pack()
# 创建输入框
entry = ttk.Entry(root)
entry.pack()
# 定义数据处理函数
def process_data(input_text):
# 分词
seg_list = jieba.cut(input_text, cut_all=False)
# 去除停用词
filtered_words = [word for word in seg_list if word not in stopwords and word != ' ']
# 将分词后的结果用空格连接成字符串
processed_text = ' '.join(filtered_words)
return processed_text
# 创建历史输入文本框
history_text = tk.Text(root, height=5, width=40)
history_text.pack()
# 定义预测函数
def predict():
input_text = entry.get() # 从输入框获取数据
processed_text = process_data(input_text) # 数据处理
# TF-IDF向量化
tfidf_input = tfidf_vectorizer.transform([processed_text])
# 使用模型进行预测
prediction = model.predict(tfidf_input)
if prediction[0] == 1:
result = "好评"
else:
result = "差评"
# 将输入和预测结果添加到历史文本框
history_text.insert(tk.END, f"输入: {input_text}\n预测结果: {result}\n")
entry.delete(0, tk.END) # 清空输入框
# 创建预测按钮
predict_button = ttk.Button(root, text="预测", command=predict)
predict_button.pack()
# 创建结果显示标签
result_label = ttk.Label(root, text="")
result_label.pack()
# 运行应用
root.mainloop()
这里代码是一个简单的Tkinter GUI应用,利用Joblib库加载保存的机器学习模型进行外卖评论情感预测,使用jieba库进行中文文本分词,joblib库保存和加载了MultinomialNB和TF-IDF模型。用户输入评论后,点击预测按钮,模型进行预测并将结果显示在界面上,Joblib的作用在于提供了一种简单而有效的方式来管理模型的状态,使其易于在应用程序中集成
如果你对类似于这样的文章感兴趣。
欢迎关注、点赞、转发~