机器学习100天-Day1403多类分类&多标签分类&多输出分类

说明:本文依据《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 值。

然鹅,我的电脑一直没跑出来这个结果。不等了,代码就在下面。

多输出分类

最后一种分类任务被叫做“多输出-多类分类”(或者简称为多输出分类)。它是多标签分类的简单泛化,在这里每一个标签可以是多类别的(比如说,它可以有多于两个可能值)。

教程中专门建立了一个增加图片噪声的系统,

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190106A0TSC100?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励