【发布时间】:2022-01-26 15:20:21
【问题描述】:
我知道这被问了很多次,但我想不通。
我有这种格式的数据集。前 767 列用于训练并具有训练数据。接下来的 669 列是标签。
标签采用一个热向量的格式,即 [0,0,0......1,0,0]。所以我有 669 列。现在我想使用 XGBoost 对其进行训练。我的代码是。
self.clf = XGBClassifier(objective="multi:softmax", num_classes=669)
data = single_data.iloc[:, 0:767]
label = single_data.iloc[:, 767:]
self.clf.fit(data, label)
我得到的错误是
ValueError: y should be a 1d array, got an array of shape (1638, 670) instead.
我该如何解决这个问题?谢谢
【问题讨论】:
-
它告诉你不要对标签进行热编码 - 只需使用单个列,其中每个类都有不同的数字
-
有什么办法可以用一热吗?
-
把你的一个热点转换成类。我认为最简单的方法是
lab = np.argmax(label,axis=1)
标签: python machine-learning scikit-learn xgboost