accuracy = (torch.abs(output[test_mask].float() - drug_graph_label[test_mask].float()) < eps).sum() / (drug_graph_label[test_mask].shape[0]) print("Epoch [{}/{}], train loss: {:.4f}, test accuracy: {:.4f}".format(epoch + 1, epochs, loss.item(), accuracy)) 将这里的accuracy的指标改成spearman
时间: 2023-12-03 13:43:56 浏览: 137
test_CNN.rar_Testcnn_cifar_cnng.test_test_cnn_testcnn是什么
要将这里的accuracy指标改成spearman,需要对输出和标签进行秩相关系数计算。可以使用Scipy库中的spearmanr函数来计算,代码如下:
```python
from scipy.stats import spearmanr
# 计算秩相关系数
rho, _ = spearmanr(output[test_mask], drug_graph_label[test_mask])
print("Epoch [{}/{}], train loss: {:.4f}, test rho: {:.4f}".format(epoch + 1, epochs, loss.item(), rho))
```
这里的`output`是神经网络模型的输出,`drug_graph_label`是标签,`test_mask`是测试集的掩码。计算出的`rho`即为Spearman相关系数。
阅读全文