选择反映python中每个结果类的影响因素的分类模型

时间:2019-06-28 20:44:49

标签: python-3.x machine-learning scikit-learn random-forest multilabel-classification

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

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

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

1 个答案:

答案 0 :(得分:0)

您可以很好地使用RF,并且仍然可以通过使用软件包SELECT CAST('2019-01-31 09:00:00.000' AS date); 来了解每个功能在做出预测中的正面/负面影响。我已经解释了如何通过获取虹膜数据集来利用程序包执行相同的操作。

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]

这就是你得到的

contribution of each factor

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

show_weights

enter image description here

show_weights(clf, feature_names = X.columns.values) 不仅适用于RF,还适用于其他许多型号,请参阅eli5 documentation了解更多详细信息。

希望这会有所帮助!