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个赞
据我所知,从未对输出进行过一次热编码。您需要对一个特征进行一次热编码,这样模型就不会混淆某些颜色大于其他颜色。当您计算输出时,模型使用基于类别的概率分布。所以这里不会有任何问题。
简而言之,您应该只对输入特征而不是输出类进行一次热编码。
添加回答
举报