2 回答

TA貢獻1909條經驗 獲得超7個贊
在多類分類問題中,您的輸出應該只是一個目標列,您將訓練模型在該列的類之間進行分類。您必須拆分為單獨的目標列,如果您必須預測每個樣本的n
不同類別,但事實并非如此,您只需要每個樣本的一個目標。
因此對于多類分類,不需要對目標進行 OneHotEncode,因為您只需要一個目標列(在 SVC 中也可以是分類的)。您必須OneHotEncoder
使用或與其他一些編碼器一起編碼的是分類輸入特征,它必須是數字。
此外,SVC
可以處理分類目標,因為它LabelEncode
是內部的:
from sklearn.datasets import load_iris
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y)
y_train_categorical = load_iris()['target_names'][y_train]
# array(['setosa', 'setosa', 'versicolor',...
sv = SVC()
sv.fit(X_train, y_train_categorical)
sv.classes_
# array(['setosa', 'versicolor', 'virginica'], dtype='<U10')

TA貢獻1802條經驗 獲得超6個贊
據我所知,從未對輸出進行過一次熱編碼。您需要對一個特征進行一次熱編碼,這樣模型就不會混淆某些顏色大于其他顏色。當您計算輸出時,模型使用基于類別的概率分布。所以這里不會有任何問題。
簡而言之,您應該只對輸入特征而不是輸出類進行一次熱編碼。
添加回答
舉報