from math import sqrt from scipy.stats import kendalltau def rmse(true, predicted): true=list(true) predicted=list(predicted) error=list() error=[true[i]-predicted[i] for i in range(len(true))] mse=sum([error[i]*error[i] for i in range(len(error))])/len(error) value=sqrt(mse) return value def kendalltau(rankA, rankB): if len(rankA) != len(rankB): raise TypeError("The two rank lists must be of the same length.") N = len(rankA) if isinstance(rankA[0], tuple): rankA = [rankA[i][0] for i in range(N)] if isinstance(rankB[0], tuple): rankB = [rankB[i][0] for i in range(N)] listA = [i for i in range(N)] listB = [rankB.index(rankA[i]) for i in range(N)] return kendalltau(listA, listB)[0]