我正在处理具有多个分类预测变量的多项式响应数据集。

我选择在Python上运行分类随机森林,效果很好。我能够获得最重要的影响因素及其局部图。

我无法弄清楚哪个预测因素对哪个结果贡献最大,并意识到RF可能不是理解预测因素和多个结果之间动态的最合适模型。
我希望您可以提出其他可以反映结果与预测因素之间动态关系的模型。
谢谢

最佳答案

您可以很好地使用RF,并且仍然可以通过使用包eli5来了解每个功能在做出预测中的正面/负面影响。我已经解释了如何通过获取虹膜数据集来利用程序包执行相同的操作。

import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from eli5 import show_prediction, show_weights

df = pd.read_csv("./Data/iris.csv")
df.head()

    Sepal   Petal   Width   Height  Class
0   5.1      3.5    1.4      0.2    Iris-setosa
1   4.9      3.0    1.4      0.2    Iris-setosa
2   4.7      3.2    1.3      0.2    Iris-setosa
3   4.6      3.1    1.5      0.2    Iris-setosa
4   5.0      3.6    1.4      0.2    Iris-setosa

x = df.drop("Class", axis=1)
Y = df["Class"]

clf = RandomForestClassifier(n_estimators=100, max_depth=2,
                       random_state=0)
clf.fit(x,Y)


现在,使用eli5来完成技巧。假设我想获取数据点x.loc[1]的每个因素的贡献

show_prediction(clf, x.loc[1], show_feature_values=True)


这就是你会得到的

python-3.x - 选择反射(reflect)python中每个结果类的影响因素的分类模型-LMLPHP

此示例的预测标签为Iris-setosa,而width是预测为Iris-setosa的主要原因。同样,当您查看其他两列时,您还将了解为什么数据点未归为其他类别。如果您想要更一般的解释,请使用show_weights,如下所示

show_weights(clf, feature_names = X.columns.values)


python-3.x - 选择反射(reflect)python中每个结果类的影响因素的分类模型-LMLPHP

eli5不仅适用于RF,而且也适用于许多其他型号,有关更多详细信息,请参考eli5 documentation

希望这可以帮助!

关于python-3.x - 选择反射(reflect)python中每个结果类的影响因素的分类模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56813034/

10-12 20:23