如何找到决策树算法中使用的参数

数据挖掘 机器学习 分类 scikit-学习 决策树
2022-02-21 06:16:38

我使用机器学习算法,例如类似于此的决策树分类器:

from sklearn import tree
X = [[0, 0], [1, 1]]
Y = [0, 1]
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, Y)
clf.predict([[2., 2.]])

如何找出使用了哪些参数?

2个回答

clf定义后输入即可;在您的情况下,它给出:

clf
# result:

DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',
                       max_depth=None, max_features=None, max_leaf_nodes=None,
                       min_impurity_decrease=0.0, min_impurity_split=None,
                       min_samples_leaf=1, min_samples_split=2,
                       min_weight_fraction_leaf=0.0, presort='deprecated',
                       random_state=None, splitter='best')

即所有参数及其默认值,因为您没有在定义中指定任何内容clf = tree.DecisionTreeClassifier()

您可以通过类似的方式获取 scikit-learn 中任何算法的参数。

使用 scikit-learn v0.22.2 测试

更新

正如 Ben Reiniger 在下面的评论中正确指出的那样,从 scikit-learn v0.23 开始,我们需要先设置显示配置才能使其正常工作:

sklearn.set_config(print_changed_only=False)

您还可以使用get_params为(我相信)所有 scikit-learn 模型定义的方法,因为它们继承自sklearn.base.BaseEstimator. 这使得创建某些模型的新实例变得非常容易(尽管您也可以使用sklearn.base.clone),或者保存参数以供以后评估。

>>> clf.get_params()
{'ccp_alpha': 0.0, 'class_weight': None, 'criterion': 'gini', 'max_depth': None, 'max_features': None, 'max_leaf_nodes': None, 'min_impurity_decrease': 0.0, 'min_impurity_split': None, 'min_samples_leaf': 1, 'min_samples_split': 2, 'min_weight_fraction_leaf': 0.0, 'presort': 'deprecated', 'random_state': None, 'splitter': 'best'}