In [2]:
#!/usr/bin/python
# -*- coding: utf-8 -*-

__author__ = '3404199'

import numpy as np
import Parser
import itertools
import Tools
from Models import *

In [2]:
datafile = r"../ml-100k/u.data"

# Best config from GridSearch
config = [10,20,0.1,0.1]

# Now learn the model for the whole data
model = SVDGD(datafile, epochs=config[0], nZ=config[1], lambda_4=config[2], learning_rate=config[3])

In [5]:
print "Global bias: {:1.3f}".format(model.mi)


Global bias: 3.530

In [16]:
save_dir = "../export_data"
if not os.path.isdir(save_dir):
    os.makedirs(save_dir)
# Export user_bias
np.savetxt("{}/user_bias.csv".format(save_dir),model.user_bias,delimiter=",")

# Export item_bias
np.savetxt("{}/item_bias.csv".format(save_dir),model.item_bias,delimiter=",")

# Export user_latent
np.savetxt("{}/user_latent.csv".format(save_dir),model.user_latent[1:,:],delimiter=",")

# Export item_latent
np.savetxt("{}/item_latent.csv".format(save_dir),model.item_latent[1:,:],delimiter=",")

In [13]:
model.user_latent[1:,:].shape


Out[13]:
(943L, 20L)

In [5]:
pairs_lt = Tools.folder2pairs(r"../ml-100k/")
m_score = 0.0
for pair in pairs_lt:
    bias = Bias(Parser.MatrixParser.txttocsc(pair[0]), "item_{}.png".format(pair[2]), case='item')
    score = bias.predict(Parser.MatrixParser.txttocsc(pair[1]))
    print pair[2], score
    m_score += score
print "Mean Item", m_score/len(pairs_lt)


1 1.03341137142
2 1.0304843172
3 1.01966297961
4 1.01687935065
5 1.02233512342
Mean Item 1.02455462846

In [7]:
pairs_lt = Tools.folder2pairs(r"../ml-100k/")
m_score = 0.0
for pair in pairs_lt:
    bias = Bias(Parser.MatrixParser.txttocsc(pair[0]), "item_{}.png".format(pair[2]), case='user')
    score = bias.predict(Parser.MatrixParser.txttocsc(pair[1]))
    print pair[2], score
    m_score += score
print "Mean user", m_score/len(pairs_lt)


1 1.06299512766
2 1.04674674923
3 1.0328964563
4 1.03665759713
5 1.03929235048
Mean user 1.04371765616
C:\Python27\lib\site-packages\matplotlib\pyplot.py:423: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_num_figures`).
  max_open_warning, RuntimeWarning)

In [8]:
datafile = r"../ml-100k/u.data"

In [9]:
biasI = Bias(Parser.MatrixParser.txttocsc(datafile), "tmp.png", case='item')
biasU = Bias(Parser.MatrixParser.txttocsc(datafile), "tmp.png", case='user')

In [13]:
np.transpose(biasI.pred).shape


Out[13]:
(1683L, 1L)

In [15]:
save_dir = "../export_data"
# Export user_bias
np.savetxt("{}/user_biasBasic.csv".format(save_dir),np.transpose(biasU.pred),delimiter=",")
 
# Export item_bias
np.savetxt("{}/item_biasBasic.csv".format(save_dir),np.transpose(biasI.pred),delimiter=",")

In [ ]: