我目前正在使用Tensorflow解决分类问题。我训练了大约120个模型,每个模型给出3类的概率,如:
[0.2, 0.7, 0.1]
并且需要初始化我的AdaBoost分类器。所以我简单地把每个模型的输出,连接起来,然后作为X_train集合传递。在我的y_train集合中,我有一个热编码的输出。它看起来像这样:
X系列(_T):
[[3.19357822e-03 6.72347784e-01 3.24458629e-01 ... 1.10733241e-03
9.03163731e-01 9.57289338e-02]
[1.52293205e-01 6.48728848e-01 1.98977932e-01 ... 8.79950225e-01
1.15971960e-01 4.07785503e-03]
[7.07598269e-01 2.86189407e-01 6.21227315e-03 ... 4.26333368e-01
5.70607007e-01 3.05970246e-03]
...
[2.65177800e-06 6.76032901e-01 3.23964417e-01 ... 3.27477939e-02
5.97387493e-01 3.69864702e-01]
[7.55840586e-03 6.64247215e-01 3.28194410e-01 ... 6.18536165e-03
2.70069510e-01 7.23745108e-01]
[2.90204018e-01 6.98843300e-01 1.09527064e-02 ... 9.26106215e-01
7.10975081e-02 2.79638381e-03]]
y_训练:
[[0. 0. 1.]
[0. 1. 0.]
[1. 0. 0.]
...
[0. 0. 1.]
[0. 1. 0.]
[1. 0. 0.]]
我的第一个问题是这个错误:
ValueError: y should be a 1d array, got an array of shape (49005, 3) instead.
它在试图符合我的模型时出现:
ada.fit(X_train, y_train)
我使用以下方法构建:
dt = DecisionTreeClassifier(max_depth=2, random_state=1)
ada = AdaBoostClassifier(base_estimator=dt, n_estimators=180, random_state=1)
我的输入形状是
(49005, 360)
输出形状为
(49005, 3)
在这一点上,我不知道我的训练集AdaBoost应该看起来像什么。谁能给我一些建议,如何建立我的训练集?
1条答案
按热度按时间qmelpv7a1#
AdaBoostClassifier
需要具有类标签的数组,而不是one-hot编码值。从fit函数的正式文档中:
因此,需要将
y_train
从one-hot编码值转换为标签:y_train将类似于
[0 2 1 1 2 0 0 ...]