我想用tensorflow张量建立一个pearson相关系数度量。他们确实有一个tensorflow概率包https://www.tensorflow.org/probability/api_docs/python/tfp/stats/correlation,但这与当前版本的tensorflow存在依赖性问题。恐怕这会导致库达断裂。在tensorflow中独立实现pearson相关系数度量将有助于.
所以我想要这样的东西:
def p_corr(y_true, y_pred):
# calculate the pearson correlation coefficient here
return pearson_correlation_coefficient
这里,y_true和y_pred将是一个相同维数的列表。
发布于 2022-06-22 09:02:32
这样做很好:
from keras import backend as K
def pearson_r(y_true, y_pred):
# use smoothing for not resulting in NaN values
# pearson correlation coefficient
# https://github.com/WenYanger/Keras_Metrics
epsilon = 10e-5
x = y_true
y = y_pred
mx = K.mean(x)
my = K.mean(y)
xm, ym = x - mx, y - my
r_num = K.sum(xm * ym)
x_square_sum = K.sum(xm * xm)
y_square_sum = K.sum(ym * ym)
r_den = K.sqrt(x_square_sum * y_square_sum)
r = r_num / (r_den + epsilon)
return K.mean(r)
https://stackoverflow.com/questions/72710792
复制相似问题