如果我计算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。 但是:
答案 0 :(得分:1)
第1部分
回答您的问题#1:
作为param_name
,您可以使用您选择的估算工具中的一个可用参数。
例如:假设您选择估算工具:LinearRegression
。从这个link可以看出,可用的参数/参数是fit_intercept=True, normalize=False, copy_X=True, n_jobs=1
。所以现在您知道特定估算器的可用参数是什么。
现在,从this link我们可以看到如何定义param_name
和param_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
用于所有估算工具。
希望这有帮助