【发布时间】:2020-10-21 04:05:59
【问题描述】:
我正在使用多标签探针并开始使用sklearn,它提供了非常好的开箱即用的方法来处理多标签。我使用MultiOutputClassifier 和RandomForestClassifier 作为估计器。具有 4 个类的示例:
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.multioutput import MultiOutputClassifier
# The data from your screenshot
# A B C D E F G
x = np.array([
[133.5, 27, 284, 638, 31, 220],
[111.9, 27, 285, 702, 36, 230],
[99.3, 25, 310, 713, 39, 227],
[102.5, 25, 311, 670, 34, 218]
])
y = np.array([[1, 0, 0, 1],
[0, 1, 0, 0],
[0, 0, 0, 1],
[0, 0, 0, 1]])
forest = RandomForestClassifier(n_estimators=100)
classifier = MultiOutputClassifier(forest)
classifier.fit(x, y)
此代码为每个标签生成一个分类器(在这种情况下,我们将最终得到 4 个分类器)。我的问题是:
- 是否可以为每个标签传递不同的分类器(如果有使用
sklearn的开箱即用实现) - 我尝试将
RandomizedSearchCV直接应用于MultiOutputClassifier,但似乎在所有参数中只选择了一个模型,而不是为每个标签选择一个最佳模型。这样做的动机是什么?相同的模型参数用于不同的分类器?是否可以使用开箱即用的MultiOutputClassifier和RandomizedSearchCV为每个标签获取最佳模型?
我也尝试了there 中的示例,但它仍然只返回一个最终分类器。
谢谢!
【问题讨论】:
标签: python numpy machine-learning scikit-learn multilabel-classification