你好 Stackoverflowers,
我正在使用 azureml,我想知道是否可以记录我正在训练的 xgboost 模型的混淆矩阵以及我已经记录的其他指标。这是我正在使用的代码示例:
from azureml.core.model import Model
from azureml.core import Workspace
from azureml.core.experiment import Experiment
from azureml.core.authentication import ServicePrincipalAuthentication
import json
with open('./azureml.config', 'r') as f:
config = json.load(f)
svc_pr = ServicePrincipalAuthentication(
tenant_id=config['tenant_id'],
service_principal_id=config['svc_pr_id'],
service_principal_password=config['svc_pr_password'])
ws = Workspace(workspace_name=config['workspace_name'],
subscription_id=config['subscription_id'],
resource_group=config['resource_group'],
auth=svc_pr)
y_pred = model.predict(dtest)
acc = metrics.accuracy_score(y_test, (y_pred>.5).astype(int))
run.log("accuracy", acc)
f1 = metrics.f1_score(y_test, (y_pred>.5).astype(int), average='binary')
run.log("f1 score", f1)
cmtx = metrics.confusion_matrix(y_test,(y_pred>.5).astype(int))
run.log_confusion_matrix('Confusion matrix', cmtx)
上面的代码引发了这种错误:
TypeError: Object of type ndarray is not JSON serializable
我已经尝试将矩阵转换为更简单的矩阵,但是在我记录它的“手动”版本之前发生了另一个错误(cmtx = [[30000, 50],[40, 2000]]
)。
run.log_confusion_matrix('Confusion matrix', [list([int(y) for y in x]) for x in cmtx])
AzureMLException: AzureMLException:
Message: UserError: Resource Conflict: ArtifactId ExperimentRun/dcid.3196bf92-4952-4850-9a8a- c5103b205379/Confusion matrix already exists.
InnerException None
ErrorResponse
{
"error": {
"message": "UserError: Resource Conflict: ArtifactId ExperimentRun/dcid.3196bf92-4952-4850-9a8a-c5103b205379/Confusion matrix already exists."
}
}
这让我觉得我没有正确处理命令run.log_confusion_matrix()
。那么,再一次,我可以将混淆矩阵记录到我的 azureml 实验中的最佳方式是什么?