如何在sklearn SelectKBest()中设置评分函数的参数

2024-10-02 14:20:09 发布

您现在位置:Python中文网/ 问答频道 /正文

{cdski>在课程中学习选择。SelectKBest()可以将可调用的score函数作为输入。在本例中,我希望使用mutual_info_regression作为score函数。mutual_info_regression可以接受一些我想自己设置的参数。例如,我想设置random_state = 0。问题是我不确定如何将参数传递给score函数,因为score函数本身就是SelectKBest()中的一个参数。显然,像SelectKBest(score_func = mutual_info_classif(random_state=0))这样的函数将不起作用,因为mutal_info_classif函数将被直接调用。我觉得这可能是关于python类的一个非常基本的问题,但是我似乎找不到任何东西来解决我想要的东西。提前感谢您的时间!在


Tags: 函数info参数random课程funcscorestate
1条回答
网友
1楼 · 发布于 2024-10-02 14:20:09

您可以创建另一个调用mutual_info_regression的函数,并传递它:

def my_score(X, y):
    return mutual_info_regression(X, y, random_state=0)

SelectKBest(score_func=my_score)

Python标准库为创建这样的函数提供了一个有用的助手,称为functools.partial。它允许使用一些预先设置的参数创建函数;而不是“手动”我的分数定义,你可以写

^{pr2}$

当然,您也可以直接传递partial,这使您非常接近您的示例:

from functools import partial
SelectKBest(score_func=partial(mutual_info_classif, random_state=0))

相关问题 更多 >