--- title: Bi-partite Dataset keywords: fastai sidebar: home_sidebar summary: "Generate bi-partite graph dataset." description: "Generate bi-partite graph dataset." nb_path: "nbs/transforms/transforms.bipartite.ipynb" ---
import pandas as pd
train = pd.DataFrame(
{'userId':[1,1,2,2,3,4,5],
'itemId':[1,2,1,3,2,4,5],
'rating':[4,5,2,5,3,2,4]}
)
train
class Args:
# default column names
user_col = 'userId'
item_col = 'itemId'
feedback_col = 'rating'
# params
K = 1 # The number of negative samples
offset = 3.5 # Criterion of likes/dislikes
# dataset
num_u=5
num_v=5
args = Args()
def deg_dist(train, num_v):
uni, cou = np.unique(train[args.item_col].values-1, return_counts=True)
cou = cou**(0.75)
deg = np.zeros(num_v)
deg[uni] = cou
return torch.tensor(deg)
neg_dist = deg_dist(train, args.num_v)
neg_dist
import warnings
warnings.filterwarnings('ignore')
training_dataset = BipartiteDataset(args, train, neg_dist, args.offset, args.num_u, args.num_v, args.K)
training_dataset.negs_gen_EP(1)
training_dataset.edge_4 = training_dataset.edge_4_tot[:,:,:]
train
[(a,b,c,d) for a,b,c,d in zip(training_dataset.edge_1.tolist(),
training_dataset.edge_2.tolist(),
training_dataset.edge_3.tolist(),
training_dataset.edge_4[:,0,0].tolist())]