协同过滤与隐语义模型推荐系统实例1: 数据处理

本文介绍了如何构建一个音乐推荐系统,包括数据读取、音乐详细信息的加入、数据清洗与合并,以及对音乐数据集的分析。通过对用户播放总量和歌曲播放总量的统计,选取部分数据进行处理,最终对最流行的歌曲、releases和歌手进行了深入探讨,为协同过滤和矩阵分解的推荐算法奠定了基础。
摘要由CSDN通过智能技术生成

构建一个音乐推荐系统

  • 基于商品相似性的推荐
  • 基于SVD矩阵分解的推荐
一. 数据读取
import pandas as pd
import numpy as np
import time
import sqlite3

data_home = 'F:/study/'

triplet_dataset = pd.read_csv(filepath_or_buffer = data_home+'train_triplets.txt',
                             sep='\t', header=None, names=['user','song','play_count'])
print(triplet_dataset.shape)
triplet_dataset.info()
triplet_dataset.head(10)

(48373586, 3)
memory usage: 1.1+ GB
在这里插入图片描述
对每一个用户,分别统计他的播放总量

output_dict = {
   }
with open(data_home + 'train_triplets.txt') as f:
	for line_numer, line in enumerate(f):
		user = line.split('\t')[0]
		play_count = int(line.split('\t')[2])
		if user in output_dict:
			play_count += output_dict[user]
			output_dict.update({
   user:play_count})
		output_dict.update({
   user:play_count})
output_list = [{
   'user':k, 'play_count':v} for k,v in output_dict.items()]
play_count_df = pd.DataFrame(output_list)
play_count_df = play_count_df.sort_values(by = 'play_count', ascending = False)
play_count_df.to_csv(path_or_buf = 'user_playcount_df.csv', index = False)

对于每一首歌,分别统计它的播放总量

output_dict = {
   }
with open(data_home + 'train_triplets.txt') as f:
	for line_number, line in enumerate(f):
		song = line.split('\t')[1]
		play_count = int(line.split('\t')[2])
		if song in output_dict:
			play_count += output_dict
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值