• sklearn中实现多分类任务(OVR和OVO)


    sklearn中实现多分类任务(OVR和OVO)

    1、OVR和OVO是针对一些二分类算法(比如典型的逻辑回归算法)来实现多分类任务的两种最为常用的方式,sklearn中专门有其调用的函数,其调用过程如下所示:

    #多分类任务的封装OVR(n个)和OVO(Cmn个)
    #sklearn中采用的逻辑回归是可以进行多分类任务的,默认采用ovr方式
    from sklearn import datasets
    d=datasets.load_iris()
    x=d.data
    y=d.target
    from sklearn.model_selection import train_test_split
    x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=1)
    #默认的OVR的多分类任务,时间更短,准确度较低
    log1=LogisticRegression()
    log1.fit(x_train,y_train)
    print(log1.score(x_test,y_test))
    #修改默认参数,使得其成为OVO的多分类算法,准确度更高一点,时间更长
    log2=LogisticRegression(multi_class="multinomial",solver="newton-cg")
    log2.fit(x_train,y_train)
    print(log2.score(x_test,y_test))
    #sklearn中封装的OVO和OVR
    #sklearn中对于所有的二分类算法提供了统一的OVR和OVO的分类器函数,可以方便调用实现所有二分类算法的多分类实现
    from sklearn.multiclass import OneVsOneClassifier
    from sklearn.multiclass import OneVsRestClassifier
    from sklearn.model_selection import train_test_split
    log_reg=LogisticRegression() #1-1定义一种二分类算法
    ovr=OneVsRestClassifier(log_reg) #1-2进行多分类转换OVR
    ovo=OneVsOneClassifier(log_reg) #1-2进行多分类转换OVO
    ovr.fit(x_train,y_train) #1-3进行数据训练与预测
    print(ovr.score(x_test,y_test))
    ovo.fit(x_train,y_train)
    print(ovo.score(x_test,y_test))

    实现结果如下所示:

  • 相关阅读:
    正则表达式学习
    由#pragma GCC diagnostic ignored "-Wdeprecated-declarations" 浅出
    Xcode调试
    多线程GCD 完整版
    [不定时更新-(进阶必看)我常去逛的iOS干货文章、blog等
    老程序自动安装更新程序
    fragment 学习
    Android常用的颜色列表 color.xml
    android的padding和margin的区别
    android shape的使用
  • 原文地址:https://www.cnblogs.com/Yanjy-OnlyOne/p/11350553.html
Copyright © 2020-2023  润新知