You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

保存机器学习模型后如何预测?以余弦相似度推荐系统为例

基于余弦相似度的推荐系统预测方案

你的核心问题是缺少对训练组件的持久化保存,以及外部输入的标准化处理流程。以下是具体实现步骤和代码:

1. 保存训练好的核心组件

要支持外部输入预测,必须保存训练阶段生成的三个关键资源:TF-IDF向量器、数据集的TF-IDF矩阵、原帖子Caption列表。使用joblib(sklearn官方推荐)保存:

import joblib

# 你的原有训练代码
captions = data["Caption"].tolist()
vectorizer = TfidfVectorizer()
uni_tfidf = vectorizer.fit_transform(captions)

# 保存到本地文件
joblib.dump(vectorizer, 'tfidf_vectorizer.pkl')
joblib.dump(uni_tfidf, 'dataset_tfidf_matrix.pkl')
joblib.dump(captions, 'captions_list.pkl')

2. 加载组件并处理外部输入

预测阶段只需加载保存的资源,对外部输入做统一的向量转换,再计算余弦相似度生成推荐:

import joblib
from sklearn.metrics.pairwise import cosine_similarity

# 加载保存的组件
vectorizer = joblib.load('tfidf_vectorizer.pkl')
dataset_tfidf = joblib.load('dataset_tfidf_matrix.pkl')
captions = joblib.load('captions_list.pkl')

# 处理外部输入的Caption(示例)
external_input = "用户新发布的帖子描述内容"
# 用训练好的向量器转换输入(必须用transform,不能重新fit)
input_tfidf = vectorizer.transform([external_input])

# 计算与数据集所有样本的余弦相似度
similarity_scores = cosine_similarity(input_tfidf, dataset_tfidf).flatten()

# 获取Top4相似的帖子(和你原有逻辑一致)
top_similar_indices = similarity_scores.argsort()[:-5:-1]

# 输出推荐结果
for idx in top_similar_indices:
    print(captions[idx])

关键注意点

  • 禁止重新fit向量器:预测时必须使用训练阶段的vectorizer做transform,否则输入向量的空间和数据集向量空间不匹配,相似度计算完全无效。
  • 数据集更新同步:如果你的帖子数据集有新增或删除,需要重新训练并保存新的TF-IDF矩阵和Caption列表,保证推荐结果基于最新数据。
  • 存储选择:joblib比原生pickle更适合存储sklearn模型和大型稀疏矩阵,读写效率更高。

内容的提问来源于stack exchange,提问作者Dark Light

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:40:27