
分类
|
105
为了阐释清楚,这里不讨论面部识别,让我们来看一个更为简单的示例:
from sklearn.neighbors import
KNeighborsClassifier
y_train_large = (y_train >= 7)
y_train_odd = (y_train % 2 == 1)
y_multilabel = np.c_[y_train_large, y_train_odd]
knn_clf = KNeighborsClassifier()
knn_clf.fit(X_train, y_multilabel)
这段代码会创建一个 y_multilabel 数组,其中包含两个数字图片的目标标签:第
一个表示数字是否是大数(7、8、9),第二个表示是否为奇数。下一行创建一个
KNeighborsClassifier 实例(它支持多标签分类,不是所有的分类器都支持),然
后使用多个目标数组对它进行训练。现在用它做一个预测,注意它输出两个标签:
>>>
knn_clf.predict([some_digit])
array([[False, True]])
结果是正确的!数字 5 确实不大(False),为奇数(True)。
评估多标签分类器的方法很多,如何选择正确的度量指标取决于你的项目。比如方法之
一是测量每个标签的 F1 分数(或者之前讨论过的任何其他二元分类器指标),然后简单
地计算平均分数。下面这段代码计算所有标签的平均 F1 分数:
>>>
y_train_knn_pred ...