博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Bobo老师机器学习笔记第九课-如何处理多分类任务?
阅读量:4171 次
发布时间:2019-05-26

本文共 1617 字,大约阅读时间需要 5 分钟。

1、什么是多分类任务?

   针对多类问题的分类中,具体讲有两种,即multiclass classification和multilabel classification

multiclass是指分类任务中包含不止一个类别时,每条数据仅仅对应其中一个类别,不会对应多个类别。

multilabel是指分类任务中不止一个分类时,每条数据可能对应不止一个类别标签,例如一条新闻,可以被划分到多个板块。

无论是multiclass,还是multilabel,做分类时都有两种策略,一个是one-vs-​the-rest(one-vs-all),一个是one-vs-one。

简称就是OvR和OvO

2、OvR和OvO的原理是什么?

OvR: 假设有n个类别,选择其中一个作为1类,剩下的n-1作为一类。进行n次分类,选择分类得分最高的。 

 

OvO:  同样假设有n个类别,则会针对两两类别建立二项分类器,得到k=n*(n-1)/2个分类器。 然后进行K次分类,选择最高的;

通常来说,OvO耗时较多,但较为准确。 

3、Sklearn中是如何实现多类别分类的?

在逻辑回归中,有个参数是:

multi_class : str, {‘ovr’, ‘multinomial’, ‘auto’}, default: ‘ovr’ 声明是多类别分类。

log_reg2 = LogisticRegression(multi_class="multinomial", solver="newton-cg")

利用鸢尾花测试集:

X, y = datasets.load_iris(return_X_y=True)X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=666)log_reg2 = LogisticRegression(multi_class="multinomial", solver="newton-cg")log_reg2.fit(X_train, y_train)print log_reg2.score(X_test, y_test)

运行结果是1.0 

此外,在Sklearn中,针对OvR和OvO专门封装了分类器。

X, y = datasets.load_iris(return_X_y=True)X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=666)log_reg = LogisticRegression()log_reg.fit(X_train, y_train)log_reg.score(X_test, y_test)from sklearn.multiclass import OneVsRestClassifierovr = OneVsRestClassifier(log_reg)ovr.fit(X_train, y_train)print 'ovr:', ovr.score(X_test, y_test)from sklearn.multiclass import OneVsOneClassifierovo = OneVsOneClassifier(log_reg)ovo.fit(X_train, y_train)ovo.score(X_test, y_test)print 'ovo:', ovo.score(X_test, y_test)

分类结果:

ovr: 0.9473684210526315

ovo: 1.0
 

最后注意一下:

1、OneVsOneClassifier和OnevsRestClassifier都是在sklearn中的multiclass下面

2、初始化这两个分类器的时候需要传入分类的模型。

 

参考文章:

转载地址:http://cekai.baihongyu.com/

你可能感兴趣的文章
javaWeb监听器、过滤器、拦截器
查看>>
RESTFUL风格的接口
查看>>
后台参数验证配置
查看>>
SpringBoot之外置Tomcat配置
查看>>
java 删除 list 中的元素
查看>>
idea启动优化
查看>>
java发展史
查看>>
Java内存区域
查看>>
数据库与模式的区别
查看>>
数字签名的原理
查看>>
showDialog
查看>>
Flex 拖拽范例
查看>>
flash builder 4 编译器参数
查看>>
flex常用网站
查看>>
flex 页面跳转
查看>>
cat | wc -l 少一行的问题
查看>>
socket 科普文章
查看>>
Mutex, semaphore, spinlock的深度解析
查看>>
pthread线程使用小结
查看>>
A Game of Thrones(59)
查看>>