前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Keras-learn-note(3)

Keras-learn-note(3)

作者头像
AngelNH
发布2020-04-16 11:05:46
3320
发布2020-04-16 11:05:46
举报
文章被收录于专栏:AngelNIAngelNI

May you be faithful to yourself, live earnestly and laugh freel.

Keras 实现矩阵分解

推荐系统算法简介 这里简单介绍下推荐系统中最为主要的协同过滤算法,大致分为如下几类:

  1. 基于用户的协同过滤(给用户推荐与他相似的人购买的物品)
  2. 基于商品的协同过滤(给用户推荐和他之前喜欢的物品相似的物品)
  3. 基于模型的协同过滤:关联算法,聚类算法,分类算法,回归算法,矩阵分解,神经网络,图模型以及隐语义模型都属于这个范畴。

之前用了python来写矩阵分解,现在换种写法,用keras来实现矩阵分解。

导入数据

代码语言:javascript
复制
import pandas as pd
import numpy as np
rating = pd.read_csv('data/ratings.csv',sep=',')
num_user = np.max(rating['userId'])
num_movie = np.max(rating['movieId'])
print(num_user,num_movie,len(rating))
代码语言:javascript
复制
#计算用户电影组合的R矩阵填充率
R = len(rating)/(num_user*num_movie)
print(f"矩阵填充率:{R}")

矩阵的填充率为:0.000853805025622708

搭建模型

代码语言:javascript
复制
from keras import Model
import keras.backend as K
from keras.layers import Embedding ,Reshape,Input,Dot
K.clear_session()
def Recomand_model(num_user,num_movie,k):
    input_user = Input(shape=[None,],dtype='int32')
    model_user = Embedding(num_user+1,k,input_length = 1)(input_user)
    model_user = Reshape((k,))(model_user)
    
    input_moive = Input(shape=[None,],dtype="int32")
    model_moive = Embedding(num_movie+1,k,input_length = 1)(input_moive)
    model_moive = Reshape((k,))(model_moive)
    
    out = Dot(1)([model_user,model_moive])
    model = Model(input=[input_user,input_moive],outputs = out)
    model.compile(loss = 'mse',optimizer = 'Adam')
    model.summary()
    
    return model
代码语言:javascript
复制
model =Recomand_model(num_user,num_movie,100)

model.summary()输出模型各层的参数状况

model.layers.Reshape() :将输出调整为特定的形状

数据处理

代码语言:javascript
复制
train_u = rating['userId'].values
train_i = rating['movieId'].values
train_x = [train_u,train_i]
train_y = rating["rating"].values

训练模型

代码语言:javascript
复制
model.fit(train_x,train_y,batch_size = 100,epochs = 10)

预测

代码语言:javascript
复制
model.predict([[1],[2]])
代码语言:javascript
复制
array([[ 3.76612234]], dtype=float32)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-21|,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Keras 实现矩阵分解
    • 导入数据
      • 搭建模型
        • 数据处理
          • 训练模型
            • 预测
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档