决策树的网格搜索参数

我正在使用决策树分类器,并希望使用交叉验证(cv)来找到最佳参数。我可能会这样指定:

     parameter_grid = {    'max_depth': range(2, 10),    'max_features': range(2, 14)}

首先,我如何决定使用哪些参数范围?这是随机的还是有最佳实践可循?另一个问题是,一旦我完成了这个操作,有没有办法通过代码获取每个单独的参数及其值?谢谢


回答:

你能做的最好方法是在文档中搜索,或使用其他可靠的资源,了解每种算法参数搜索的常规和最合适的设置或启发式方法。要精确地知道应该为每个参数设置什么值,需要对它们的作用有很好的理解。

关于你提到的参数,这里有一些想法:

  • max_depth:理论上,它可以高达训练样本的数量,当然这会导致完全过拟合。然而,保持它过低可能会导致模型欠拟合。因此,通常你希望将这个值保持在较小的范围内,比如你所使用的范围。

  • max_features:这基本上限制了定义树的每个分裂时要查看的特征数量。如果有大量特征,限制其值是个好主意,否则默认情况下你会得到max_features=n_features。不过,与其在这里指定一个范围,不如搜索文档中提出的这些推荐的“经验法则”方法:

    • max_features:int, float 或 {“auto”, “sqrt”, “log2”}
    • 如果是“auto”,则 max_features=sqrt(n_features)。
    • 如果是“sqrt”,则 max_features=sqrt(n_features)。
    • 如果是“log2”,则 max_features=log2(n_features)。

总的来说,我建议你仔细查看每个参数的作用,并遵循可靠资源的建议。请注意,在文档中,你还可以找到多个参数的建议值。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注