作为变量传入Python函数参数
我正在尝试编写一个函数,该函数通过分类算法(k-Means)的各种迭代运行 在sklearn.neighborsClassifier中,有几个参数需要调整:n_邻居和leaf_大小。我想知道是否有办法指定在特定迭代期间调整哪个参数作为变量传入Python函数参数,python,data-science,Python,Data Science,我正在尝试编写一个函数,该函数通过分类算法(k-Means)的各种迭代运行 在sklearn.neighborsClassifier中,有几个参数需要调整:n_邻居和leaf_大小。我想知道是否有办法指定在特定迭代期间调整哪个参数 from sklearn.neighbors import KNeighborsClassifier def useNeighbors(iterations, *args): print(iterations) #normal argument for
from sklearn.neighbors import KNeighborsClassifier
def useNeighbors(iterations, *args):
print(iterations) #normal argument
for arg in args:
KNeighborsClassifier(arg=20)
useNeighbors(2, "n_neighbors", "leaf_size")
我想让它在本质上实例化KneighborsClassifier实例两次——第一次是将#个邻居的大小设置为20,第二次是将叶大小设置为20(默认值为#个邻居的大小为5,默认值为30)
然而,毫不奇怪,这会产生
2
TypeError: _init_params() got an unexpected keyword argument 'arg'
它按预期打印iterations参数,但是KneighborsClassifier没有将字符串参数“n_neights”识别为我试图指定要调整的参数
如何切换要在多个不同迭代中调整的参数/参数?
另外,很明显,这是一个玩具案例——我这样问是因为我希望将不同的ML分类算法集成到一个集成包中,并通过马尔可夫链蒙特卡罗迭代方法调整超参数。但为了做到这一点,我需要能够指定每个算法中的哪些参数在每次迭代中采用马尔可夫链中的“步骤”。如果我了解您想要什么,您可以使用它。范例
from functools import partial
from sklearn.neighbors import KNeighborsClassifier
classifiers = [partial(KNeighborsClassifier, n_neighbors=20),
partial(KNeighborsClassifier, leaf_size=20)]
for classifier in classifiers:
classifier()
这是使用partials的一个很好的解释。如果我理解你想要什么,你可以使用它。范例
from functools import partial
from sklearn.neighbors import KNeighborsClassifier
classifiers = [partial(KNeighborsClassifier, n_neighbors=20),
partial(KNeighborsClassifier, leaf_size=20)]
for classifier in classifiers:
classifier()
这是使用partials的一个很好的解释。您只需要使用:
您只需使用: