python-3.x 通过指定一个关键字参数,从现有的

nbnkbykc  于 2023-06-25  发布在  Python
关注(0)|答案(2)|浏览(124)

我想创建一个字典,其中字符串键和一些现有函数作为对应值。
例如:

import numpy as np
my_useful_funtions_dicts = {'sum': np.sum, 'dot': np.dot}

这个很好用。但是我想使用scikit learn中的一个函数,并指定一个关键字参数。例如使用sklearn.metrics.roc_auc_score(*args, average='weighted')
我想这样运行smtg:

from sklearn import metrics
my_dict = {'weighted_roc_auc': metrics.roc_auc_score(*args, average='weighted')}
5lwkijsr

5lwkijsr1#

您需要将字典更改为:

from sklearn import metrics
my_dict = {'weighted_roc_auc': metrics.roc_auc_score}

一旦你使用了上面的方法,你就可以使用函数中所有的关键字参数了. https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html
示例代码:

from sklearn.preprocessing import label_binarize

# You need the labels to binarize
labels = [0, 1, 2, 3]

ytest  = [0,1,2,3,2,2,1,0,1]

# Binarize ytest with shape (n_samples, n_classes)
ytest = label_binarize(ytest, classes=labels)

ypreds = [1,2,1,3,2,2,0,1,1]

# Binarize ypreds with shape (n_samples, n_classes)
ypreds = label_binarize(ypreds, classes=labels)

my_dict['weighted_roc_auc'](ytest, ypreds,average='weighted')  # I am using your dictionary with average='weighted'

#output
0.5952380952380953
lsmd5eda

lsmd5eda2#

my_dict = {'weighted_auc_roc_score': lambda true, pred: metrics.roc_auc_score(true, pred, average="weighted")}

相关问题