python - 从混合效应随机森林中获取特征重要性
问题描述
我是R
第一次python3.7 64bit
在 Windows 上运行的用户。我试图从使用PermutationImportance
from package的混合效应随机森林中获得排列重要性eli5
。可在此处找到可重复性的数据集。
合身:
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
对象中获得特征重要性?
解决方案
我不知道 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)
希望该方法知道如何处理这样命名的参数。
推荐阅读
- angular - Angular 应用程序在电子中打开,但不在浏览器中
- lettuce - 生菜中 thenAcceptAsync 的用例是什么
- c# - 如何使用 Ajax 以数组格式将多个图像从 MVC 视图发送到控制器?
- sql - 我想将包含范围的数字列表转换为仅数字列表
- sql - 选择具有聚合的多个列
- django - Django Rest Framework,TypeError:__init__() 接受 1 个位置参数,但给出了 2 个
- debugging - 隐藏 Testcafe 覆盖
- java - 连接被拒绝后套接字关闭 - 这是正常行为吗?
- ios - SwiftUI View 在嵌入 UIView 时不更新其状态(使用 UIHostingController)
- c# - 执行 DbGeometry 包含操作时出现 SqlNullValueException