MovieRecommenderV2 / visualizer.py
AJ-Gazin
Saved viz's to HTML files, directly loading now
8138b99
import umap.umap_ as umap
import plotly.express as px
import pandas as pd
import random
import viz_utils
import torch
import torch
import torch.nn.functional as F
from torch.nn import Linear
import torch_geometric.transforms as T
from torch_geometric.nn import SAGEConv, to_hetero
from torch_geometric.transforms import RandomLinkSplit, ToUndirected
from sentence_transformers import SentenceTransformer
from torch_geometric.data import HeteroData
import yaml
import os
import model_def
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
data = torch.load("./PyGdata.pt", map_location=device)
movies_df = pd.read_csv("./sampled_movie_dataset/movies_metadata.csv")
model = model_def.Model(hidden_channels=32).to(device)
model.load_state_dict(torch.load("PyGTrainedModelState.pt", map_location=device)),
model.eval()
total_users = data['user'].num_nodes
total_movies = data['movie'].num_nodes
print("total users =", total_users)
print("total movies =", total_movies)
with torch.no_grad():
a = model.encoder(data.x_dict,data.edge_index_dict)
user = pd.DataFrame(a['user'].detach().cpu())
movie = pd.DataFrame(a['movie'].detach().cpu())
embedding_df = pd.concat([user, movie], axis=0)
movie_index = 20
title = movies_df.iloc[movie_index]['title']
print(title)
os.makedirs("Visualizations", exist_ok=True)
fig_umap = viz_utils.visualize_embeddings_umap(embedding_df)
viz_utils.save_visualization(fig_umap, "./Visualizations/umap_visualization")
print("UMAP visualization saved")
fig_tsne = viz_utils.visualize_embeddings_tsne(embedding_df)
viz_utils.save_visualization(fig_tsne, "./Visualizations/tsne_visualization")
print("TSNE visualization saved")
fig_pca = viz_utils.visualize_embeddings_pca(embedding_df)
viz_utils.save_visualization(fig_pca, "./Visualizations/pca_visualization")
print("PCA visualization saved")