def get_probability_transition_matrix(A: np.matrix): """ Calcule la matrice de probabilité de transition à partir de la matrice d'adjacence :param A: La matrice de base :return: La matrice de probabilités de transition """ res = [] for i in range(A.__len__()): res.append([0] * A.__len__()) do = A.sum(axis=1) for i in range(A.__len__()): res[i] = (A[i] / float(do.item(i))).A1 return np.matrix(res)
def item_rank_inversion_mat(PTransposed: np.matrix, alpha: float, v: np.array): """ Calcul du vecteur de score par inversion matricielle :param PTransposed: La transposée de la matrice de probabilités de transition :param alpha: Le paramètre de téléportation :param v: Le vecteur de personnalisation normalisé :return: Le vecteur de page rank """ I = np.identity(PTransposed.__len__()) res = (1 - alpha) * (np.linalg.inv(I - alpha * PTransposed)) * v return res