Sklearn validation_curve:我对“param_name”参数有哪些可能性

时间:2017-07-03 09:41:44

标签: python-3.x scipy scikit-learn

如果我计算validation curve如下:

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”)在这种情况下,它是polynomialfeatures__degree。 但是:

  1. 从哪里获取“param_name”的字符串一般来说,我从哪里得到字符串“polynomialfeatures__degree”特别是因为我在任何文档中都找不到这个param_name ...是“function__param name”a指向函数的param_name的常用方法??
  2. 我可以使用validation_curve函数的估算器吗?

1 个答案:

答案 0 :(得分:1)

第1部分

回答您的问题#1:

作为param_name,您可以使用您选择的估算工具中的一个可用参数。

例如:假设您选择估算工具:LinearRegression。从这个link可以看出,可用的参数/参数是fit_intercept=True, normalize=False, copy_X=True, n_jobs=1。所以现在您知道特定估算器的可用参数是什么。

现在,从this link我们可以看到如何定义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}

这些是PolynomialFeatures的可用 param_names

编辑2:

查看param_names的另一种方法是转到源代码。

例如,在这里link,您可以在第1149-1160行中看到PolynomialFeatures估算工具的参数字符串。

最后,在这里link,您可以在第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部分:

回答您的问题#2:

我认为对于sklearn模块,您可以将validation_curve用于所有估算工具。

希望这有帮助