我知道這被問了很多次,但我無法弄清楚。
我有這種格式的資料集。前 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.
我該如何解決這個問題?謝謝
uj5u.com熱心網友回復:
我假設您的資料如下所示:
import pandas as pd
label = pd.DataFrame({'c0':[0,1,0,0,0], 'c1':[1,0,0,0,0], 'c2':[0,0,1,1,0], 'c3':[0,0,0,0,1]})
print(label)
輸出
c0 c1 c2 c3
0 0 1 0 0
1 1 0 0 0
2 0 0 1 0
3 0 0 1 0
4 0 0 0 1
將它們轉換為整數
label = label.apply(lambda x: x.argmax(), axis=1).values
現在你的標簽看起來像這樣,一個陣列:
array([1, 0, 2, 2, 3], dtype=int64)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/422908.html
標籤:
