所以MultiClass只是说一个目标变量中有多个类。 MultiOutput意味着我们有多个目标变量。这里我们有一个MultiClass-MultiOutput
问题。
scikit-learn本机支持以下分类器的MultiClass-MultiOutput
。
sklearn.tree.DecisionTreeClassifier
sklearn.tree.ExtraTreeClassifier
sklearn.ensemble.ExtraTreesClassifier
sklearn.neighbors.KNeighborsClassifier
sklearn.neighbors.RadiusNeighborsClassifier
sklearn.ensemble.RandomForestClassifier
在大多数情况下,我建议您选择RandomForest,因为开箱即用可以带来出色的结果。
因此,以一个虚拟的例子来说明RandomForestClassifier
对多个目标的api。
### Dummy Example only to test functionality
np.random.seed(0)
X = np.random.randn(10,2)
y1 = (X[:,[0]]>.5).astype(int) # make dummy y1
y2 = (X[:,[1]]<.5).astype(int) # make dummy y2
y = np.hstack([y1,y2]) # y has 2 columns
print("X = ",X,sep="\n",end="\n\n")
print("y = ",y,end="\n\n")
rfc = RandomForestClassifier().fit(X,y) # use the same api for multi column y!
out = rfc.predict(X)
print("Output = ",out,sep="\n")
输出
X =
[[ 1.76405235 0.40015721]
[ 0.97873798 2.2408932 ]
[ 1.86755799 -0.97727788]
[ 0.95008842 -0.15135721]
[-0.10321885 0.4105985 ]
[ 0.14404357 1.45427351]
[ 0.76103773 0.12167502]
[ 0.44386323 0.33367433]
[ 1.49407907 -0.20515826]
[ 0.3130677 -0.85409574]]
y =
[[1 1]
[1 0]
[1 1]
[1 1]
[0 1]
[0 0]
[1 1]
[0 1]
[1 1]
[0 1]]
Output =
[[1 1]
[1 0]
[1 1]
[1 1]
[0 1]
[0 0]
[1 1]
[0 1]
[1 1]
[0 1]]
顺便说一句,当您在做与NLP相关的模型时,我建议使用Keras's multi-output NN api来训练神经网络以获得更好的输出!
本文链接:https://www.f2er.com/3163014.html