【问题标题】:sklearn; Value of hyperparameters are the same before and after model fittingsklearn;模型拟合前后超参数值相同
【发布时间】:2021-11-24 00:48:35
【问题描述】:

我想在拟合前后检查 scikit-learn 模型的超参数值:

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(n_samples=1000, n_features=4, n_informative=2, n_redundant=0)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

clf = RandomForestClassifier(random_state=0)

print(clf.get_params())
clf.fit(X_train, y_train)
print(clf.get_params())

它在模型拟合之前和之后给了我相同的值。我认为模型拟合后的超参数应该不同。我做错了吗?

另外,当我想使用模型进行预测时,模型用于预测的超参数是什么?

感谢您的帮助。

【问题讨论】:

    标签: python scikit-learn hyperparameters model-fitting


    【解决方案1】:

    Hyperparameters 是学习算法(示例中为 RandomForestClassifier)配置的一部分,在训练过程中不会更改。 get_params() 的输出结果显示了模型的超参数配置。模型的内部状态(即构成随机森林的决策树中的节点定义)在模型训练期间确实会发生变化,但 get_params() 不提供该信息。

    【讨论】:

    • 谢谢。当我使用交叉验证时,我应该在每个折叠中初始化模型内部状态(或模型权重)吗?
    • 交叉验证是关于在每个折叠中改变数据集,并且没有规定任何关于模型内部状态的内容。但是,如果更改初始化对您的特定应用程序有帮助,那么它可能是值得的。 Here 是另一个堆栈交换的相关讨论。
    猜你喜欢
    • 2019-04-26
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 2019-04-15
    • 2022-06-20
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    相关资源
    最近更新 更多