Skip to content
Snippets Groups Projects
mooc.py 1.77 KiB
Newer Older
"""
Experiments for mooc Dataset
ACTIONID    USERID    TARGETID    TIMESTAMP


Number of users	7,047
Number of targets	97
Number of actions	411,749
Number of positive action labels	4,066
Timestamp	seconds
"""

import experiment
import os
import pandas as pd

# read data
filepath = os.path.join("Data","mooc_actions.tsv")
df = pd.read_table(filepath)
df = df[['TARGETID', 'TIMESTAMP','USERID']]

header_list =  ['target', 'timestamp','source']
df.columns = header_list

# filter vertices
#num_vertices =  100000
#df = df[((df['source'] < num_vertices) & (df['target'] < num_vertices))] 

def _swap (row):
    if row['source'] > row['target']:
        row['source'] , row['target'] =row['target'] , row['source']
    return row
    
# Undirected graph
df=df.apply(lambda row: _swap(row), axis=1)
#scale timestamps for zeroth reference point
refValue = df['timestamp'].min()
df['timestamp'] -= refValue

# Remove self-loops
df = df[((df['source'] ) != (df['target']))]



# # Experiments



# User parameters
num_roles=2
num_segments=3
num_levels=2
algo_ver= 3
dest_folder='./Results/bikes/'

# tuning parameters
theta = 1e-5
eta = 1
tuning_params= {'theta':theta,'eta':eta}

import time
start_time = time.time()

exp_obj = experiment.Experiment(df,num_roles,num_segments,algo_ver,dest_folder,tuning_params,num_levels,refValue)    
exp_obj.execute()

print("--- %s seconds ---" % (time.time() - start_time))

# import numpy as np
# nodes_arr = np.union1d(df['target'],df['source']).astype(int) 
# # list of nodes         
# nodes = nodes_arr.tolist()

# likelihood for single group and single segment # Normlaized likelihood
# num_roles=1
# num_segments=1
# num_levels=1
# exp_obj = experiment.Experiment(df,num_roles,num_segments,algo_ver,dest_folder,tuning_params,num_levels,refValue)    
# exp_obj.execute()