gpt4 book ai didi

python - 在 SciKit-Learn 中使用管道排列重要性

转载 作者:行者123 更新时间:2023-12-05 03:52:36 25 4
gpt4 key购买 nike

我正在使用来自 SciKit 的确切示例,它将 permutation_importancetree feature_importances

进行比较

如你所见,使用了一个管道:

rf = Pipeline([
('preprocess', preprocessing),
('classifier', RandomForestClassifier(random_state=42))
])
rf.fit(X_train, y_train)

permutation_importance:

现在,当您拟合一个管道时,它将一个接一个地拟合所有变换并变换数据,然后使用最终估计器拟合变换后的数据。

在示例的后面,他们在拟合模型上使用了 permutation_importance:

result = permutation_importance(rf, X_test, y_test, n_repeats=10,
random_state=42, n_jobs=2)

问题:我不明白的是,result 中的特征仍然是原始的未转换特征。为什么会这样?这工作正常吗?那么 Pipeline 的目的是什么?

enter image description here

树 feature_importance:在同一示例中,当他们使用 feature_importance 时,结果会发生转换:

tree_feature_importances = (
rf.named_steps['classifier'].feature_importances_)

enter image description here

我显然可以转换我的特征,然后使用 permutation_importance,但示例中的步骤似乎是有意为之的,permutation_importance 这样做应该是有原因的不改变特征。

最佳答案

这是预期的行为。排列重要性的工作方式是打乱输入数据并将其应用于管道(或者模型,如果这是你想要的)。事实上,如果您想了解初始输入数据如何影响模型,那么您应该将其应用于管道。

如果您对预处理步骤生成的每个附加特征的特征重要性感兴趣,那么您应该生成具有列名的预处理数据集,然后将该数据直接应用于模型(使用排列重要性)管道。

在大多数情况下,人们对了解管道生成的次要特征的影响不感兴趣。这就是为什么他们在这里使用管道来包含预处理和建模步骤。

关于python - 在 SciKit-Learn 中使用管道排列重要性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62106204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com