我正在用Python的sklearn做一个随机森林。
我试图得到一个属性的每个模态的分数。
例如,在泰坦数据集中,我们如何获得Pclass变量的每个模态的分数?
由于
Pclass变量是分类变量。这意味着它有2个或更多的离散值。对于这样的变量,总是建议使用One-Hot编码来表示它们。例如,如果你的PClass变量接受3个可能的值,lower, middle和upper,那么目前你将它们编码为0,1或2。这种方法的问题在于,在某些分类器中,这种方法将引入上> 下的自然排序。因此,最常用的策略是将它们编码为3个布尔特征。所以不是1个特征,而是3个特征。下部表示为[1 0 0],中间表示为[0 1 0],上部表示为[0 0 1]。
由于您正在使用scikit-learn,这可以通过OneHotEncoder
类来完成。scikit-learn文档中的示例提供了一个说明性示例。
现在,当你把这些作为特征传递给随机森林并训练它。您可以使用clf.feature_importances_
轻松获得特性的重要性。因为现在,你使用一个特征为每个模态,你可以很容易地得到每个特征模态的重要性。
希望对你有帮助。