scipy Sklearn验证曲线(_C):param_name”参数有哪些可能性

qgzx9mmu  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(208)

如果按如下方式计算验证曲线:

PolynomialRegression(degree=2,**kwargs):
    return make_pipeline(PolynomialFeatures(degree),LinearRegression(**kwargs))

# ...

degree=np.arange(0,21)

train_score,val_score=validation_curve(PolynomialRegression(),X,y,"polynomialfeatures__degree",degree,cv=7)

函数声明参数“param_name”,即要计算的参数的名称(“param_range”)。在本例中,它是多项式特征__度。但是:
1.一般来说,我从哪里得到“param_name”的字符串,特别是从哪里得到“polynomialfeatures__degree”的字符串,因为我在任何文档中都找不到这个param_name ......“function__param name”是指向函数的param_name的常用方法吗?

  1. validation_curve函数可以用于哪些估计量?
sg2wtvxw

sg2wtvxw1#

第一部分
问题1的答案:

作为param_name,您可以使用您选择的估计量的可用参数之一。
例如:假设您选择估计器:LinearRegression。从这个link中,你可以看到可用的参数/自变量是fit_intercept=True, normalize=False, copy_X=True, n_jobs=1。所以现在你知道了特定估计量的可用参数是什么。
现在,从这个链接我们可以看到如何定义param_nameparam_range
此链接中的部分示例:

param_range = np.logspace(-6, -1, 5)

train_scores, test_scores = validation_curve(
SVC(), X, y, param_name="gamma", param_range=param_range,
cv=10, scoring="accuracy", n_jobs=1)

编辑1

对于您所称的“字符串”:如果我没理解错话,你想做的是:

from sklearn.preprocessing import PolynomialFeatures

a= PolynomialFeatures(degree=2)
a.get_params()

实验结果:

{'include_bias': True, 'interaction_only': False, 'degree': 2}

这些是多项式特征的可用param_names

编辑2:

查看param_names的另一种方法是查看源代码。
例如,在这里的链接中,您可以在第1149-1160行看到PolynomialFeatures估计量的参数字符串。
最后,在这里的链接中,您可以在第421-444行中看到LinearRegression估计量的参数字符串。

编辑3:

其他方法获取设置sklearn中估计器的参数。

from sklearn.linear_model import LinearRegression

lr = LinearRegression()
lr.get_params(deep=True)

实验结果:

{'copy_X': True, 'normalize': False, 'n_jobs': 1, 'fit_intercept': True}

现在您知道了参数,您可以建立参数:

params = {  'copy_X': False,  'fit_intercept': True,  'normalize': True }

然后,您可以在估算器中对它们进行解包:

lr_new = LinearRegression(**params)
lr_new

实验结果:

LinearRegression(copy_X=True, fit_intercept=False, n_jobs=1, normalize=True)

第二部分:
问题2的答案:

我认为在sklearn模块的情况下,可以使用validation_curve作为所有的估计器。
希望这对你有帮助

bgibtngc

bgibtngc2#

polynomialfeatures__degree是函数PolynomialRegression()的参数之一。您可以获得如下所示的参数列表:

from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import make_pipeline

def PolynomialRegression(degree=2,**kwargs):
    return make_pipeline(PolynomialFeatures(degree),
                         LinearRegression(**kwargs))

a = PolynomialRegression()
a.get_params()

结果

{'memory': None,
 'steps': [('polynomialfeatures', PolynomialFeatures()),
  ('linearregression', LinearRegression())],
 'verbose': False,
 'polynomialfeatures': PolynomialFeatures(),
 'linearregression': LinearRegression(),
 'polynomialfeatures__degree': 2,
 'polynomialfeatures__include_bias': True,
 'polynomialfeatures__interaction_only': False,
 'polynomialfeatures__order': 'C',
 'linearregression__copy_X': True,
 'linearregression__fit_intercept': True,
 'linearregression__n_jobs': None,
 'linearregression__normalize': 'deprecated',
 'linearregression__positive': False}

该参数设置为默认值2。此值将由validation_curve()函数改变

相关问题