2024-05-15 01:36:56 发布
网友
我在python中使用MLP分类器处理不同类型的数据集。在
当有两个以上的类时,我在分类器中有相同数量的输出。当我有2个类时,分类器强制为1个输出(二进制)。这会扰乱权重矩阵以及权重的解释。在
更具体地说,对于M个输入和N个输出,当N>;2时,权重矩阵(coefs_u)为MxN。当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("")
嗨,谢谢你的回复。我真的找到了一个解决办法:
如果标签是一个热编码的,那么具有两个类的分类器有两个输出。在
如果标签只是索引(带有整数的向量),那么只有一个输出,以防有两个类。如果有更多的类,那么它与一个热编码的类相同。在
您可以检查此片段以查看区别:
相关问题 更多 >
编程相关推荐