说明:本文依据《Sklearn 与 TensorFlow 机器学习实用指南》完成,所有版权和解释权均归作者和翻译成员所有,我只是搬运和做注解多类分类
二分类器只能区分两个类,而多类分类器(也被叫做多项式分类器)可以区分多于两个类。
直接处理多类分类问题:随机森林分类器、朴素贝叶斯分类器
严格的二分类器:SVM、线性分类器
有许多策略可以用二分类器去执行多类分类。
“一对所有”(OvA)策略,对mnist手写进行区分,可以做10个二分类器,然后对一张图进行分类,选取得分最高的一个结果
“一对一”(OvO)策略,对mnist手写进行区分,对每一对数据都做一个二分类器,0和1,0和2,0和3……如果有n个分类,就要做N(N-1)/2个分类器,mnist数据就是10(10-1)/2=45个。
OvO可以在小的数据集上面可以更多地训练。但是,对于大部分的二分类器来.说,OvA 是更好的选择。
教程在这里进行了验证,还是使用之前some_digit_test,在训练一个SGDClassifier分类器之后,调用decision_function方法,可以看到十个预测值里面5对应的得分是最高的7.13028292
调用decision_function()方法。不是返回每个样例的一个数值,而是返回 10 个数值,一个数值对应于一个类。
使用随机数森林来预测
很有意思的预测,这两次的图都比较难分辨,但是用随机树森林还是预测出来,可以看到对应的数值
最后,是对分类器的评估,使用交叉验证,可以看到随机梯度下降和随机树森林预测的评估中,准确率分别是86%和94%,同时教程中提到一个正则的方式** StandardScaler**进一步提升精度。
说明:本文依据《Sklearn 与 TensorFlow 机器学习实用指南》完成,所有版权和解释权均归作者和翻译成员所有,我只是搬运和做注解。
多标签分类和多输出分类
多标签分类
就是针对多个输入进行判断。
人脸识别,在输入的一张图片中有A和C两个人,有一个分类器能够分类A,B,C,对输入的图片识别为[1,0,1]。这种输出多个二值标签的分类系统被叫做多标签分类系统。
教程中设置了两个目标标签(1.大于7的数 >=7;2.奇数 %2==1),然后使用KNN进行分类。最终用交叉验证进行评估。
在这里依旧使用some_digit_test,可以看到数值为9,是一个大于7的奇数,所以结果是[[ True True]]。
有许多方法去评估一个多标签分类器。一个方法是对每个个体标签去量度 F1 值(或者前面讨论过的其他任意的二分类器的量度标准),然后计算平均值。教程中使用计算全部标签的平均 F1 值。
然鹅,我的电脑一直没跑出来这个结果。不等了,代码就在下面。
多输出分类
最后一种分类任务被叫做“多输出-多类分类”(或者简称为多输出分类)。它是多标签分类的简单泛化,在这里每一个标签可以是多类别的(比如说,它可以有多于两个可能值)。
教程中专门建立了一个增加图片噪声的系统,
领取专属 10元无门槛券
私享最新 技术干货