Большинство моделей в Sklearn поддерживает мультикласс без кодирования одного изображения.KNN и DecisionTree также поддерживают его.
Давайте проверим это на игрушечном примере,
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
f = [[1, 2], [3.2, 4.5], [2.0, 0.75], [0.25, 3.68]]
t = [1,
3,
2,
0]
lr = LogisticRegression().fit(f, t)
d = DecisionTreeClassifier().fit(f, t)
r = RandomForestClassifier().fit(f, t)
n = KNeighborsClassifier(n_neighbors=3).fit(f, t)
lr.predict(f) # array([3, 3, 2, 0])
d.predict(f) # array([3, 3, 2, 0])
r.predict(f) # array([3, 3, 2, 0])
n.predict(f) # array([0, 0, 0, 0])
Как видите, все они поддерживают мультикласс без единого горячего кодирования.
Если вы хотите использовать Nerual Net, то вам может потребоваться одно горячее кодирование меток на основе используемой вами функции потерь.