我正在Keras中构建一个用于回归任务的小型神经网络,并且我想使用与scikit-learn RandomForestRegressor相同的准确性指标:
这是一个方便的指标,因为它显示的值最高为1.0(类似于分类中的准确度百分比)。我对Keras后端的使用是否符合我想要的精度指标?
def create_model():
model = Sequential()
model.add(Dense(10,
input_dim=X.shape[1],
activation="relu"))
model.add(Dense(10,
activation="relu"))
model.add(Dense(1))
# Compile model
model.compile(loss="mean_squared_error", optimizer="adam", metrics=[det_coeff])
return model
# Is this computing the right thing?
def det_coeff(y_true, y_pred):
u = K.sum(K.square(y_true - y_pred))
v = K.sum(K.square(y_true - K.mean(y_true)))
return K.ones_like(v) - (u / v)
这似乎可以正常工作,因为没有错误,并且度量随着时间的推移逐渐增加到1,但是我想确定自己正确地实现了度量。我是Keras后端功能的新手。
最佳答案
您可以 checkout this post。我测试了以下代码,它可以正常工作。
from keras import backend as K
def coeff_determination(y_true, y_pred):
from keras import backend as K
SS_res = K.sum(K.square( y_true-y_pred ))
SS_tot = K.sum(K.square( y_true - K.mean(y_true) ) )
return ( 1 - SS_res/(SS_tot + K.epsilon()) )
关于python - Keras回归确定系数R ^ 2,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45250100/