【问题标题】:How to take the average of n random forest iterations?如何取 n 次随机森林迭代的平均值?
【发布时间】:2018-04-04 17:13:01
【问题描述】:

sklearn 中是否有一个参数可以调整以多次运行随机森林(或其他估计器)以消除运行之间的变化?最简单的方法是什么?

【问题讨论】:

    标签: scikit-learn random-forest


    【解决方案1】:

    您不能只是简单地手动消除运行之间的差异。您可以做的是使用GridSearchCV 执行超参数调整(或者您也可以查看其他类似方法at this link。您还可以查看对您的数据集执行Cross-validation 以获得更好的估计器性能。您可以看看Sklearn for cross-validation中的方法。

    还请提供更多有关您的问题的信息,例如您要解决的问题类型、数据集等,以便我们更好地为您提供帮助。

    【讨论】:

      【解决方案2】:

      VotingClassifier 与软投票可能是您正在寻找的。一般来说,给定两组预测,你可以取预测的几何平均值来平滑它。

      from scipy.stats.mstats import gmean
      df = pd.DataFrame()
      #prediction renamed in 1.csv,2.csv... for convenience
      
      for i in range(1,4):
          data = pd.read_csv('{}.csv'.format(i),index_col='id')
          data = data.rename(columns={'proba':i})
          df = pd.concat([df,data],axis=1)
      
      df['proba'] = gmean(df.iloc[:,1:4],axis=1)
      output = pd.DataFrame(data={'id':df.index,'proba':df.proba})
      output.to_csv('submissions.csv',index=False)
      

      【讨论】:

        猜你喜欢
        • 2012-10-25
        • 2022-12-17
        • 2017-12-04
        • 2015-10-26
        • 2018-06-05
        • 2013-10-26
        • 2021-03-21
        • 2021-08-17
        • 2019-07-21
        相关资源
        最近更新 更多