当前位置: 首页 > 面试题库 >

如何使用Scikit Learn在Random Forest中调整参数?

颜河
2023-03-14
问题内容
class sklearn.ensemble.RandomForestClassifier(n_estimators=10,
                                              criterion='gini', 
                                              max_depth=None,
                                              min_samples_split=2,
                                              min_samples_leaf=1, 
                                              min_weight_fraction_leaf=0.0, 
                                              max_features='auto', 
                                              max_leaf_nodes=None, 
                                              bootstrap=True, 
                                              oob_score=False,
                                              n_jobs=1, 
                                              random_state=None,
                                              verbose=0, 
                                              warm_start=False, 
                                              class_weight=None)

我正在使用具有9个样本和大约7000个属性的随机森林模型。在这些样本中,我的分类器可以识别3个类别。

我知道这远非理想条件,但我正在尝试找出哪些属性在特征预测中最重要。哪些参数最适合优化功能重要性?

我尝试了不同的方法n_estimators,发现“重要特征”(即feature_importances_数组中的非零值)的数量急剧增加。

我已经阅读了文档,但是如果有任何经验,我想知道最适合调整哪些参数,并简要说明原因。


问题答案:

根据我的经验,sklearn RandomForestClassifier的三个功能按重要性顺序值得探讨:

  • n_estimators

  • max_features

  • criterion

n_estimators确实不值得优化。您提供的估算值越多,效果就会越好。通常500或1000就足够了。

max_features值得探索许多不同的价值。这可能会对RF的行为产生很大影响,因为它决定了RF中每棵树在每个分割处考虑多少个特征。

criterion可能会产生很小的影响,但通常默认设置为罚款。如果有时间,请尝试一下。

尝试这些参数时,请确保使用sklearn的GridSearch(最好是GridSearchCV,但您的数据集大小太小)。

但是,如果我正确理解您的问题,那么您只有9个样本和3个类?大概每个课有3个样本?除非它们是好的,有代表性的记录,否则您的RF很可能会过少地容纳少量数据。



 类似资料:
  • 问题内容: 我正在通过此方法使用RESTfull Web服务: 在我的Android应用中,我想调用此方法。如何使用org.apache.http.client.methods.HttpPost给参数赋予正确的值; 我注意到我可以使用批注@HeaderParam并将标题添加到HttpPost对象。这是正确的方法吗?这样做: 在httpPost上使用setEntity方法将不起作用。它仅使用json

  • 问题内容: 我需要在Go中对int64的较大值执行运算,例如求幂和除法,但是我遇到了溢出问题。我尝试将它们转换为float64,但随后遇到其他问题。这是我尝试过的。 我有一个整数变量,必须将其转换为float64才能使用方便的数学包(https://golang.org/pkg/math)。 但是,如果整数变量太大,则无法正确转换。我假设这是因为大小大于float64。例如: 我正在尝试使用mat

  • 我想在我的网站上调整图像的大小。我知道如何做到这一点,或者调整之前的图像大小,或者计算宽度和高度,并设置像素值。但是我使用同一张图片多次使用不同的调光,因此,如果我可以将图像调整到其自身的大小,那么所需的时间会更少。 我已经试过了,但是问题是大小是相对于其父元素设置的。

  • 将超出色域的颜色转换为可打印的颜色 由于 RGB 和 HSB 颜色模型中的一些颜色(如霓虹色)在 CMYK 模型中没有等同的颜色,因此无法打印这些颜色。如果选择超出色域的颜色,则在“颜色”面板或拾色器中会出现一个警告三角形 。 单击三角形以转换为最接近的 CMYK 对等色(显示在三角形旁边的一个较小的框中)。 将颜色转换为 Web 安全颜色 Web 安全颜色是所有浏览器使用的 216 种颜色,与平

  • 本文向大家介绍如何在PowerShell中使用ErrorAction参数?,包括了如何在PowerShell中使用ErrorAction参数?的使用技巧和注意事项,需要的朋友参考一下 像ErrorActionPreference变量一样,ErrorAction参数的工作原理类似。高级功能和PowerShell中大多数内置cmdlet均支持ErrorAction参数。将非终止错误转换为终止错误,然后

  • 问题内容: 例如,我有4000行,并且定义了X限制。 找到X行后查询停止?还是查询找到所有行,然后从找到的行中获取X行? 谢谢你。 问题答案: 从MySQL参考手册: 如果您将LIMIT row_count与ORDER BY一起使用,MySQL会在找到排序结果的前row_count行后立即结束排序,而不是对整个结果进行排序。如果通过使用索引进行排序,这将非常快。如果必须完成文件排序,则必须先选择所