Yesterday once more

本文回忆了作者年轻时听广播、跟唱喜爱歌曲的美好时光。那些旋律仿佛能穿越时空,带我们回到过去,唤醒心中最珍贵的记忆。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

When I was young, I'd listen to the radio, waiting for my favorite songs.
When they played I would sing along. It made me smile.
Those were such happy times, and not so long ago.
How I wondered where they'd gone.
But they are back again, just like a long-lost friend, all the songs I've loved so well.

Every sha-la-la-la, every wo-wo still shines.
Every shing-a-ling -a-ling, that they're starting to sing, so fine.
When they get to the part where he's breaking her heart,
It can really make me cry, just like before, it's yesterday once more.

Looking back on how it was in years gone by, and the good time that I had,
makes today seem rather sad; so much has changed.
It was songs of love that I would sing to them, and I'd memorize each word.
Those old melodies still sound so good to me, as they melt the years away.

Every sha-la-la-la, every wo-wo still shines.
Every shing-a-ling -a-ling, that they're starting to sing, so fine.
All my best memories come back clearly to me; some can even make me cry.
Just like before, it's yesterday once more

import pandas as pd # 示例数据集结构 data = { 'user_id': ['U1', 'U1', 'U2', 'U3', 'U3'], 'item_id': ['S1', 'S3', 'S2', 'S1', 'S4'], 'rating': [5, 3, 4, 2, 5] } df = pd.DataFrame(data) from surprise import Dataset, Reader from surprise import SVD, KNNBaseline from surprise.model_selection import cross_validate # 1. 数据加载 reader = Reader(rating_scale=(1, 5)) data = Dataset.load_from_df(df[['user_id', 'item_id', 'rating']], reader) # ========== ID与名称映射 ========== SONG_MAPPING = { 'S4': 'Yesterday Once More', 'S7': 'My Heart Will Go On', 'S12': 'Unchained Melody', # 可扩展更多映射关系 } # ============================= # 2. 算法选择(矩阵分解示例) algo = SVD(n_factors=100, n_epochs=20, lr_all=0.005, reg_all=0.02) # 3. 交叉验证评估 cross_validate(algo, data, measures=['RMSE', 'MAE'], cv=3, verbose=True) # 4. 训练完整模型 trainset = data.build_full_trainset() algo.fit(trainset) # 5. 预测示例 uid = 'U2' # 用户ID iid = 'S3' # 歌曲ID pred = algo.predict(uid, iid) print(f'预测评分:{pred.est:.2f}') def get_top_recommendations(user_id, n=5): # 获取所有未评分歌曲 all_songs = df['item_id'].unique() rated_songs = df[df['user_id'] == user_id]['item_id'] unseen = [song for song in all_songs if song not in rated_songs.values] # 预测评分并排序 predictions = [algo.predict(user_id, song) for song in unseen] top = sorted(predictions, key=lambda x: x.est, reverse=True)[:n] return [(pred.iid, pred.est) for pred in top] def get_recommendations(user_id): # 原有预测逻辑(假设返回ID列表) recommended_ids = ['S4', 'S7', 'S12'] # 示例预测结果 # 转换ID为歌曲名称 return [SONG_MAPPING.get(sid, f'Unknown Song ({sid})') for sid in recommended_ids] 请根据这段代码,给出协同过滤算法的音乐推荐算法,最后输出的结果要求是音乐的名称。请给出完整的代码
03-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值