annotate Code/eda.py @ 16:68b8b088f50a

Code for pre-training
author Paulo Chiliguano <p.e.chiilguano@se14.qmul.ac.uk>
date Mon, 27 Jul 2015 19:24:37 +0100
parents 2e3c57fba632
children ee13c193c76e
rev   line source
p@15 1 # -*- coding: utf-8 -*-
p@15 2 """
p@15 3 Created on Wed Jul 22 17:42:09 2015
p@15 4
p@15 5 @author: paulochiliguano
p@15 6 """
p@15 7
p@16 8
p@16 9 import random
p@15 10 import numpy as np
p@15 11 from sklearn import mixture
p@15 12
p@15 13 #User-item dictionary
p@15 14 users = {"Angelica": {"SOAJJPC12AB017D63F": 3.5, "SOAKIXJ12AC3DF7152": 2.0,
p@15 15 "SOAKPFH12A8C13BA4A": 4.5, "SOAGTJW12A6701F1F5": 5.0,
p@15 16 "SOAKWCK12A8C139F81": 1.5, "SOAKNZI12A58A79CAC": 2.5,
p@15 17 "SOAJZEP12A8C14379B": 2.0},
p@15 18 "Bill":{"SOAJJPC12AB017D63F": 2.0, "SOAKIXJ12AC3DF7152": 3.5,
p@15 19 "SOAHQFM12A8C134B65": 4.0, "SOAGTJW12A6701F1F5": 2.0,
p@15 20 "SOAKWCK12A8C139F81": 3.5, "SOAJZEP12A8C14379B": 3.0},
p@15 21 "Chan": {"SOAJJPC12AB017D63F": 5.0, "SOAKIXJ12AC3DF7152": 1.0,
p@15 22 "SOAHQFM12A8C134B65": 1.0, "SOAKPFH12A8C13BA4A": 3.0,
p@15 23 "SOAGTJW12A6701F1F5": 5, "SOAKWCK12A8C139F81": 1.0},
p@15 24 "Dan": {"SOAJJPC12AB017D63F": 3.0, "SOAKIXJ12AC3DF7152": 4.0,
p@15 25 "SOAHQFM12A8C134B65": 4.5, "SOAGTJW12A6701F1F5": 3.0,
p@15 26 "SOAKWCK12A8C139F81": 4.5, "SOAKNZI12A58A79CAC": 4.0,
p@15 27 "SOAJZEP12A8C14379B": 2.0},
p@15 28 "Hailey": {"SOAKIXJ12AC3DF7152": 4.0, "SOAHQFM12A8C134B65": 1.0,
p@15 29 "SOAKPFH12A8C13BA4A": 4.0, "SOAKNZI12A58A79CAC": 4.0,
p@15 30 "SOAJZEP12A8C14379B": 1.0},
p@15 31 "Jordyn": {"SOAKIXJ12AC3DF7152": 4.5, "SOAHQFM12A8C134B65": 4.0,
p@15 32 "SOAKPFH12A8C13BA4A": 5.0, "SOAGTJW12A6701F1F5": 5.0,
p@15 33 "SOAKWCK12A8C139F81": 4.5, "SOAKNZI12A58A79CAC": 4.0,
p@15 34 "SOAJZEP12A8C14379B": 4.0},
p@15 35 "Sam": {"SOAJJPC12AB017D63F": 5.0, "SOAKIXJ12AC3DF7152": 2.0,
p@15 36 "SOAKPFH12A8C13BA4A": 3.0, "SOAGTJW12A6701F1F5": 5.0,
p@15 37 "SOAKWCK12A8C139F81": 4.0, "SOAKNZI12A58A79CAC": 5.0},
p@15 38 "Veronica": {"SOAJJPC12AB017D63F": 3.0, "SOAKPFH12A8C13BA4A": 5.0,
p@15 39 "SOAGTJW12A6701F1F5": 4.0, "SOAKWCK12A8C139F81": 2.5,
p@15 40 "SOAKNZI12A58A79CAC": 3.0}
p@15 41 }
p@15 42
p@16 43 items = {"SOAJJPC12AB017D63F": [2.5, 4, 3.5, 3, 5, 4, 1, 5, 4, 1],
p@16 44 "SOAKIXJ12AC3DF7152": [2, 5, 5, 3, 2, 1, 1, 5, 4, 1],
p@16 45 "SOAKPFH12A8C13BA4A": [1, 5, 4, 2, 4, 1, 1, 5, 4, 1],
p@16 46 "SOAGTJW12A6701F1F5": [4, 5, 4, 4, 1, 5, 1, 5, 4, 1],
p@16 47 "SOAKWCK12A8C139F81": [1, 4, 5, 3.5, 5, 1, 1, 5, 4, 1],
p@16 48 "SOAKNZI12A58A79CAC": [1, 5, 3.5, 3, 4, 5, 1, 5, 4, 1],
p@16 49 "SOAJZEP12A8C14379B": [5, 5, 4, 2, 1, 1, 1, 5, 4, 1],
p@16 50 "SOAHQFM12A8C134B65": [2.5, 4, 4, 1, 1, 1, 1, 5, 4, 1]}
p@16 51 '''
p@15 52 profile = {"Profile0": [2.5, 4, 3.5, 3, 5, 4, 1],
p@15 53 "Profile1": [2.5, 4, 3.5, 3, 5, 4, 1],
p@15 54 "Profile2": [2.5, 4, 3.5, 3, 5, 4, 1],
p@15 55 "Profile3": [2.5, 4, 3.5, 3, 5, 4, 1],
p@15 56 "Profile4": [2.5, 4, 3.5, 3, 5, 4, 1],
p@15 57 "Profile5": [2.5, 4, 3.5, 3, 5, 4, 1],
p@15 58 "Profile6": [2.5, 4, 3.5, 3, 5, 4, 1],
p@15 59 "Profile7": [2.5, 4, 3.5, 3, 5, 4, 1]}
p@16 60 '''
p@15 61
p@16 62 '''
p@16 63 Generate M individuals uniformly
p@16 64 '''
p@16 65 np.random.seed(len(users))
p@16 66 M = np.random.uniform(1, 5, len(users) * len(items.values()[0]))
p@16 67 M.shape = (-1, len(items.values()[0]))
p@16 68 profile = {}
p@16 69 i = 0
p@16 70 for row in M.tolist():
p@16 71 profile["Profile" + str(i)] = M.tolist()[i]
p@16 72 i = i + 1
p@15 73
p@15 74 np.random.seed(1)
p@15 75 g = mixture.GMM(n_components=7)
p@15 76 # Generate random observations with two modes centered on 0
p@15 77 # and 10 to use for training.
p@15 78 obs = np.concatenate((np.random.randn(100, 1), 10 + np.random.randn(300, 1)))
p@15 79 g.fit(obs)
p@15 80 np.round(g.weights_, 2)
p@15 81 np.round(g.means_, 2)
p@15 82 np.round(g.covars_, 2)
p@15 83 g.predict([[0], [2], [9], [10]])
p@15 84 np.round(g.score([[0], [2], [9], [10]]), 2)
p@15 85 # Refit the model on new data (initial parameters remain the
p@15 86 # same), this time with an even split between the two modes.
p@15 87 g.fit(20 * [[0]] + 20 * [[10]])
p@15 88 np.round(g.weights_, 2)