簡體   English   中英

2類MLP分類器被強制為1個輸出(二進制分類器)

[英]2 class MLP classifier is forced to 1 output (binary classifier)

我在python中將MLP分類器用於不同類型的數據集。

當有兩個以上的類時,分類器中的輸出數相等。 當我有2個類別時,分類器被強制為1個輸出(二進制)。 這弄亂了權重矩陣以及權重的解釋。

更具體地,當N> 2時,對於M個輸入和N個輸出,權重矩陣(coefs_)是M×N。 當N = 2時,權重矩陣為Mx1。 有什么方法可以將其強制為兩個單獨的類? 如果我只想對兩個類進行多標簽分類怎么辦?

提前致謝!

嗨,謝謝你的答復。 我實際上找到了一個解決方案:

如果標簽是一鍵編碼的,則具有兩個類別的分類器具有兩個輸出。

如果標簽只是索引(帶有整數的向量),則在有兩個類的情況下只有一個輸出。 如果有更多類,則與一鍵編碼相同。

您可以查看此代碼段以查看不同之處:

import numpy as np
from sklearn.neural_network import MLPClassifier
import pandas as pd
noinputs=10
nosamples=300

for noclasses in range(2,4):
    X_train=np.random.rand(nosamples,noinputs)

    Y_train=np.random.random_integers(0,noclasses-1,(nosamples))
    Y_train_onehot=pd.get_dummies(Y_train)

    clf_vector=MLPClassifier(hidden_layer_sizes=[],max_iter=2)    
    clf_onehot=MLPClassifier(hidden_layer_sizes=[],max_iter=2)    

    clf_vector.fit(X_train, Y_train)
    clf_onehot.fit(X_train, Y_train_onehot)
    print("Number of classes: "+str(noclasses))
    print("Vector labels: Shape of weight matrix: "+str(np.array(clf_vector.coefs_).shape))
    print("One-hot encoded labels: Shape of weight matrix: "+str(np.array(clf_onehot.coefs_).shape))
    print("")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM