为何打印DecisionTreeClassifier未显示详细参数信息?
问题:打印DecisionTreeClassifier为何不显示详细参数?
我运行以下代码:
import pandas as pd import numpy as np from sklearn import tree fruit_data_set = pd.DataFrame() # 1代表苹果,0代表橙子 fruit_data_set["fruit"] = np.array([ 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]) fruit_data_set["weight"] = np.array([170, 175, 180, 178, 182, 130, 120, 130, 138, 145]) fruit_data_set["smooth"] = np.array([ 9, 10, 8, 8, 7, 3, 4, 2, 5, 6]) fruit_classifier = tree.DecisionTreeClassifier() fruit_classifier.fit(fruit_data_set[["weight", "smooth"]], fruit_data_set["fruit"]) print(fruit_classifier)
得到的输出是:
DecisionTreeClassifier()
但教程中的预期输出是包含所有默认参数的详细格式:
DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None, max_features=None, max_leaf_nodes=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, presort=False, random_state=None, splitter='best')
请问为什么打印DecisionTreeClassifier对象时看不到这些详细参数?
解答
这是scikit-learn版本迭代带来的输出格式差异:
- 旧版本的scikit-learn在打印模型对象时,会列出所有参数(包括默认值),所以教程里会显示完整的参数列表。
- 新版本的scikit-learn做了优化,打印模型时只会展示非默认参数,如果所有参数都用默认值,就会输出
DecisionTreeClassifier()这种简洁格式。
如果需要查看完整的参数信息,可以用以下两种方法:
- 调用
get_params()方法,返回包含所有参数及其值的字典:print(fruit_classifier.get_params()) - 使用sklearn的内部打印工具输出格式化的参数列表:
from sklearn.utils._pprint import _pprint _pprint(fruit_classifier.get_params(), indent=4)
内容的提问来源于stack exchange,提问作者nicomp
相关产品推荐
相关产品推荐

