我是R用户,第一次在Windows上运行python3.7 64bit。我试图从一个混合效应随机森林中获得置换的重要性,使用来自package eli5的PermutationImportance。重现性的数据集可以找到这里。
Fit:
merf = MERF(n_estimators= 500, max_iterations= 100)
np.random.seed(100)
merf.fit(X_train_merf, Z_train, clusters_train, y_train)特征重要性:
perimp = PermutationImportance(merf, cv = None, refit = False, n_iter = 50).fit(X_train, Z_train, clusters_train, y_train)以上代码将产生此错误。
TypeError: fit() takes from 3 to 4 positional arguments but 5 were given但是fit()只包含4个参数..。
是否有可能从merf对象中获得特性重要性?
发布于 2019-06-25 06:43:35
我不知道merf或eli5模块,但我可以告诉您为什么会发生这种异常。
如果您查看PermutationImportance模块及其API的文档,可以看到fit()方法的以下定义:
fit(X, y, groups=None, **fit_params)最后一个参数之前的那两颗星意味着它是一个关键词参数。因此,实际上,该方法可以包含3个位置参数和多个关键字参数。但这也意味着您需要命名第四个参数。在该方法中,您将得到该参数的字典,该方法需要知道如何处理它。
示例:
def my_fit(X, **fit_params):
print(fit_params)
my_fit("positional argument", x=1,y=2,z=3)
>>> {'x': 1, 'y': 2, 'z': 3}我不使用eli5,所以我不能告诉您要使用哪些关键字,或者是否可以从merf对象获得特性重要性,但是错误是通过给您的最后一个参数取一个名称来解决的:
perimp = PermutationImportance(merf, cv = None, refit = False, n_iter = 50).fit(X_train, Z_train, clusters_train, y_train=y_train)希望该方法知道如何处理这样的参数。
发布于 2020-03-10 19:43:57
我遇到了同样的问题,从源代码中我发现您可以从随机森林模型对象(它是MERF的一部分)中提取特性的重要性。
mrf.fit(X_train, Z_train, clusters_train, y_train)
feat_importance=mrf.trained_fe_model.feature_importances_https://stackoverflow.com/questions/56596693
复制相似问题