Действительно, не похоже, что MultiOutputClassifier от Sklearn имеет атрибут, который содержит некое объединение важных значений всех оценок (в вашем случае, всех классификаторов RandomForest), используемых в модели..
Однако можно получить доступ к значениям функций каждого классификатора RandomForest, а затем усреднить их все вместе, чтобы дать вам среднюю важность каждого объекта по всем классификаторам RandomForest.
Объекты MultiOutputClassifier имеютатрибут с именем estimators_
.Если вы запустите multi_forest.estimators_
, вы получите список, содержащий объект для каждого из ваших классификаторов RandomForest.
Для каждого из этих объектов классификатора RandomForest вы можете получить доступ к его значениям функций через атрибут feature_importances_
.
Чтобы собрать все воедино, это был мой подход:
feat_impts = []
for clf in multi_forest.estimators_:
feat_impts.append(clf.feature_importances_)
np.mean(feat_impts, axis=0)
Я запустил пример кода, который вы вставили в свой вопрос, а затем запустил вышеуказанный блок кода, чтобы вывести списокследующие 15 средних значений:
array([0.09830467, 0.0912088 , 0.05738045, 0.1211305 , 0.03901933,
0.05429491, 0.06929378, 0.06404416, 0.05676634, 0.04919717,
0.05244265, 0.0509295 , 0.05615341, 0.09202444, 0.04780991])
. Содержит среднее значение каждой из 15 функций для каждого из 3-х случайных классификаторов леса, используемых в MultiOutputClassifier.
Это должно как минимум помочьчтобы увидеть, какие функции в целом имеют тенденцию быть более важными при прогнозировании для каждого из трех классов.