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))

實現結果如下所示:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM