首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从混合效应随机森林中获取特征重要性

从混合效应随机森林中获取特征重要性
EN

Stack Overflow用户
提问于 2019-06-14 10:51:21
回答 2查看 783关注 0票数 1

我是R用户,第一次在Windows上运行python3.7 64bit。我试图从一个混合效应随机森林中获得置换的重要性,使用来自package eli5PermutationImportance。重现性的数据集可以找到这里

Fit:

代码语言:javascript
复制
merf = MERF(n_estimators= 500, max_iterations= 100)
np.random.seed(100)
merf.fit(X_train_merf, Z_train, clusters_train, y_train)

特征重要性:

代码语言:javascript
复制
perimp = PermutationImportance(merf, cv = None, refit = False, n_iter = 50).fit(X_train, Z_train, clusters_train, y_train)

以上代码将产生此错误。

代码语言:javascript
复制
TypeError: fit() takes from 3 to 4 positional arguments but 5 were given

但是fit()只包含4个参数..。

是否有可能从merf对象中获得特性重要性?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-25 06:43:35

我不知道merf或eli5模块,但我可以告诉您为什么会发生这种异常。

如果您查看PermutationImportance模块及其API的文档,可以看到fit()方法的以下定义:

代码语言:javascript
复制
    fit(X, y, groups=None, **fit_params)

最后一个参数之前的那两颗星意味着它是一个关键词参数。因此,实际上,该方法可以包含3个位置参数和多个关键字参数。但这也意味着您需要命名第四个参数。在该方法中,您将得到该参数的字典,该方法需要知道如何处理它。

示例:

代码语言:javascript
复制
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对象获得特性重要性,但是错误是通过给您的最后一个参数取一个名称来解决的:

代码语言:javascript
复制
perimp = PermutationImportance(merf, cv = None, refit = False, n_iter = 50).fit(X_train, Z_train, clusters_train, y_train=y_train)

希望该方法知道如何处理这样的参数。

票数 1
EN

Stack Overflow用户

发布于 2020-03-10 19:43:57

我遇到了同样的问题,从源代码中我发现您可以从随机森林模型对象(它是MERF的一部分)中提取特性的重要性。

代码语言:javascript
复制
mrf.fit(X_train, Z_train, clusters_train, y_train)
feat_importance=mrf.trained_fe_model.feature_importances_
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56596693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档