前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NCF Data Processing

NCF Data Processing

作者头像
AngelNH
发布2020-04-15 17:13:30
4790
发布2020-04-15 17:13:30
举报
文章被收录于专栏:AngelNI

左眼永远见不到右眼,只能陪她一起哭泣。

NCF数据处理是对论文neural_collaborative_filtering作者所提出的神经网络协同过滤源代码的运行结果,不过在源代码的基础上做了一些更改,运行环境是 python3.6,keras1.2.2,tensorflow1.3.0 ,电脑本地运行约7个小时。

数据处理

前言

GMF batch_size=256, dataset=’ml-1m’, epochs=100, learner=’adam’, lr=0.001, num_factors=8, num_neg=4, out=1, path=’Data/‘, regs=’[0,0]’, verbose=1

MLP batch_size=256, dataset=’ml-1m’, epochs=100, layers=’[64,32,16,8]’, learner=’adam’, lr=0.001, num_neg=4, out=1, path=’Data/‘, reg_layers=’[0,0,0,0]’, verbose=1

NeuMF batch_size=256, dataset=’ml-1m’, epochs=100, layers=’[64,32,16,8]’, learner=’adam’, lr=0.001, mf_pretrain=’’, mlp_pretrain=’’, num_factors=8, num_neg=4, out=1, path=’Data/‘, reg_layers=’[0,0,0,0]’, reg_mf=0, verbose=1

#user=6040, #item=3706, #train=994169, #test=6040

评估 leave-one-out

  1. 命中率(HR)
  2. 归一化折扣累积增益(NDCG)

读取数据

代码语言:javascript
复制
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
GMF = pd.read_table('GMF.txt',header=None, encoding='gb2312', sep=',')
MLP = pd.read_table('MLP.txt',header=None, encoding='gb2312', sep=',')
NeuMF = pd.read_table('NEUMF.txt',header=None, encoding='gb2312', sep=',')

查看数据

获取数据

获取HR数据

代码语言:javascript
复制
GMF_HR = []
MLP_HR = []
NeuMF_HR = []
for i in GMF[0]:
    GMF_HR.append(eval(i[-6:]))
for i in  MLP[0]:
    MLP_HR.append(eval(i[-6:]))
for i in NeuMF[0]:
    NeuMF_HR.append(eval(i[-6:]))

获取NDGC

代码语言:javascript
复制
GMF_NDGC= []
MLP_NDGC = []
NeuMF_NDGC = []
for i in GMF[1]:
    GMF_NDGC.append(eval(i[-6:]))
for i in  MLP[1]:
    MLP_NDGC.append(eval(i[-6:]))
for i in NeuMF[1]:
    NeuMF_NDGC.append(eval(i[-6:]))

获取loss

代码语言:javascript
复制
GMF_loss= []
MLP_loss = []
NeuMF_loss = []
for i in GMF[2]:
    GMF_loss.append(eval(i[-14:-8]))
for i in  MLP[2]:
    MLP_loss.append(eval(i[-14:-8]))
for i in NeuMF[2]:
    NeuMF_loss.append(eval(i[-14:-8]))

图表表示

HR对比

代码语言:javascript
复制
f=plt.figure(figsize=(12,10))
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.title("GMF-MLP-NeuMF  HR 对比图",fontsize = 20)
plt.xlabel("Iteration",fontsize = 20)
plt.ylabel("HR",fontsize = 20)
plt.plot(range(100),GMF_HR,label = "GMF")#,linestyle='--')
plt.plot(range(100),MLP_HR,label = "MLP")#,linestyle='-.')
plt.plot(range(100),NeuMF_HR,label ="NeuMF")
plt.scatter(98,0.6437,marker='^',color = 'black')
plt.scatter(29,0.6763,marker='^',color = 'black')
plt.scatter(35,0.6848,marker='^',color = 'black')
plt.legend()

plt.grid(c="w")
plt.show()

NDGC 对比

代码语言:javascript
复制
f=plt.figure(figsize=(12,10))
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.title("GMF-MLP-NeuMF NDGC 对比图",fontsize = 20)
plt.xlabel("Iteration",fontsize = 20)
plt.ylabel("NDGC",fontsize = 20)
plt.plot(range(100),GMF_NDGC,label = "GMF")
plt.plot(range(100),MLP_NDGC,label = "MLP")
plt.plot(range(100),NeuMF_NDGC,label ="NeuMF")
plt.scatter(98,0.3749,marker='^',color = 'black')
plt.scatter(29,0.3988,marker='^',color = 'black')
plt.scatter(35,0.4095,marker='^',color = 'black')
plt.legend()
plt.grid(c="w")
plt.show()

LOSS 对比

代码语言:javascript
复制
f=plt.figure(figsize=(12,10))
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.title("GMF-MLP-NeuMF  loss 对比图",fontsize = 20)
plt.xlabel("Iteration",fontsize = 20)
plt.ylabel("Loss",fontsize = 20)
plt.plot(range(100),GMF_loss,label = "GMF")
plt.plot(range(100),MLP_loss,label = "MLP")
plt.plot(range(100),NeuMF_loss,label ="NeuMF")
plt.legend()
plt.grid(c ="w")
plt.show()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-08-03|,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据处理
    • 读取数据
      • 查看数据
        • 获取数据
          • 获取HR数据
          • 获取NDGC
          • 获取loss
        • 图表表示
          • HR对比
          • NDGC 对比
          • LOSS 对比
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档