在当今数据驱动的时代,个性化推荐系统已成为提升用户体验、增加用户粘性的关键技术。无论你是电商、内容平台还是应用开发者,搭建一个属于自己的推荐系统都极具价值。本文将手把手教你如何在 Ubuntu 系统上从零开始搭建一个基础但功能完整的推荐系统,即使你是编程小白也能轻松上手。

一、准备工作:环境与依赖安装
首先,确保你使用的是 Ubuntu 20.04 或更高版本。打开终端(Ctrl+Alt+T),执行以下命令更新系统并安装必要工具:
sudo apt updatesudo apt upgrade -ysudo apt install python3 python3-pip python3-venv git -y
接下来,创建一个虚拟环境,避免依赖冲突:
mkdir ~/recommendation-systemcd ~/recommendation-systempython3 -m venv rec_envsource rec_env/bin/activate
二、安装推荐系统核心库
我们将使用 Python 的
surprise库来构建一个基于协同过滤的推荐模型。它简单高效,非常适合初学者。同时安装
pandas用于数据处理:
pip install pandas scikit-learn surprise numpy
三、准备示例数据集
为了演示,我们使用 MovieLens 的小型数据集(100k 条评分)。你可以直接下载并解压:
wget https://files.grouplens.org/datasets/movielens/ml-latest-small.zipunzip ml-latest-small.zip
数据文件
ratings.csv包含用户ID、电影ID、评分和时间戳,这正是推荐系统所需的基本结构。
四、编写推荐系统代码
在项目目录下创建一个 Python 脚本
recommend.py:
import pandas as pdfrom surprise import Dataset, Reader, SVDfrom surprise.model_selection import train_test_split# 加载数据ratings = pd.read_csv('ml-latest-small/ratings.csv')reader = Reader(rating_scale=(0.5, 5.0))data = Dataset.load_from_df(ratings[['userId', 'movieId', 'rating']], reader)# 划分训练集和测试集trainset, testset = train_test_split(data, test_size=0.2)# 使用SVD算法训练模型model = SVD()model.fit(trainset)# 预测某用户对某电影的评分(示例:用户1对电影10)pred = model.predict(uid=1, iid=10)print(f"预测评分: {pred.est:.2f}")# 获取用户1的Top-5推荐电影user_id = 1movies = ratings['movieId'].unique()predictions = []for movie in movies: pred = model.predict(uid=user_id, iid=movie) predictions.append((movie, pred.est))# 按预测评分排序并取前5top5 = sorted(predictions, key=lambda x: x[1], reverse=True)[:5]print(f"\n用户 {user_id} 的Top-5推荐电影ID:")for movie_id, score in top5: print(f"电影ID: {movie_id}, 预测评分: {score:.2f}")五、运行并测试你的推荐系统
保存文件后,在终端中运行:
python recommend.py
如果一切顺利,你将看到类似如下的输出:
预测评分: 3.72用户 1 的Top-5推荐电影ID:电影ID: 318, 预测评分: 4.85电影ID: 50, 预测评分: 4.79...
六、进阶建议与部署
恭喜!你已经成功在 Ubuntu 上搭建了一个基础的个性化推荐系统。接下来,你可以:
集成 Web 接口(如 Flask 或 FastAPI)提供 API 服务 使用更复杂的模型(如神经协同过滤)提升精度 将模型部署到云服务器,实现 24/7 在线推荐 结合用户画像和内容特征,构建混合推荐系统通过本教程,你不仅掌握了 Ubuntu推荐系统搭建 的基本流程,也迈入了Linux推荐引擎开发的大门。坚持实践,你将能构建出适用于真实业务场景的智能推荐服务!
