def hclust(self): dissim2 = functions.getSimilaritiesFromModel(self._subModel) linkageMatrix = hier.linkage(dist.squareform(dissim2), method='single') labels = functions.getMoviesNames(self._moviesInformations,self._original_movieIDs[self._mostRated]) dendro = hier.dendrogram(linkageMatrix, labels=labels, leaf_rotation=90) plt.show()
def __init__(self): self._model= RSVD.load("objects/") self._original_movieIDs=np.load("objects/original_movieIDs") self._ratings= np.load("objects/ratings") self._moviesInformations = functions.loadMoviesInformations('data_movilens1m/movies.dat') self._usersInformations = functions.loadUsersInformations('data_movilens1m/users.dat') self._dissim = functions.getSimilaritiesFromModel(self._model.u) self._movieMean=np.load("objects/movieMean") self._userMean=np.load("objects/userMean") # PCA pour les films les plus notes self._mostRated = functions.getNMostRatedMovies(self._ratings,2000) j = 0 self._subModel=np.empty((len(self._mostRated),self._model.u.shape[1])) #subRatings doit etre du meme type que model self._subMovieMean = np.empty((len(self._mostRated),2)) for i,row in enumerate(self._model.u): if i in self._mostRated: self._subMovieMean[j] = self._movieMean[i] self._subModel[j]=row j= j +1 # PCA pour les films les plus notes self._mostRating = functions.getNMostRatingUsers(self._ratings) j = 0 self._subModel2=np.empty((len(self._mostRating),self._model.v.shape[1])) #subRatings doit etre du meme type que model self._subMovieMean2 = np.empty((len(self._mostRating),2)) for i,row in enumerate(self._model.v): if i in self._mostRating: self._subMovieMean2[j] = self._userMean[i] self._subModel2[j]=row j= j +1
def graph(self) : dissim2 = functions.getSimilaritiesFromModel(self._subModel) maxi = np.amax(dissim2) #-1 A = dist.squareform(maxi-dissim2) G = nx.from_numpy_matrix(A) movieList = functions.getMoviesNames(self._moviesInformations,self._original_movieIDs[self._mostRated]) G = nx.relabel_nodes(G, dict(zip(range(len(G.nodes())),movieList))) #G = nx.to_agraph(G) #G.node_attr.update(color="red", style="filled") #G.edge_attr.update(color="blue", width="2.0") nx.draw(G, edge_color = "blue", font_weight="bold") plt.show()