Nic*_*ick 6 python scikit-learn keras tensorflow tensor
我正在Keras建立一个用于回归任务的小型神经网络,我想使用与scikit-learn RandomForestRegressor相同的精度度量:
系数R ^ 2定义为(1-u/v),其中u是平方的回归和((y_true-y_pred)**2).sum()和v是剩余的平方和((y_true - y_true.mean())**2).sum().
这是一个方便的指标,因为它显示的值高达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)
Run Code Online (Sandbox Code Playgroud)
这看起来有效,因为没有任何错误和度量标准随着时间的推移逐渐增加,但我想确定我已经正确地实现了度量标准.我是Keras后端功能的新手.
小智 13
你可以查看这篇文章.我测试了以下代码,它可以满足您的需要.
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()) )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8541 次 |
| 最近记录: |