#python #machine-learning #classification
#python #машинное обучение #классификация
Вопрос:
Я выполняю упражнение по классификации и сталкиваюсь с целью с более чем 2 категориальными классами. Я закодировал эти классы с помощью Labelencoder. Единственная проблема в том, что, я полагаю, мне, возможно, придется использовать Onehotencoding после того, как у меня больше не будет только нуля и 1, но и 0,1,2,3. Реальность такова, что я просто не знаю, примет ли Knn или решение T. это число в качестве классов. Если нет, может кто-нибудь сказать мне, что делать?
Вот моя первая цель:
Good
bad
medium
excellent
Я изменил его на следующее:
1
3
2
0
Я предполагаю, что мой реальный вопрос заключается в том, можно ли это напрямую использовать в качестве классов для моей цели или мне нужна дальнейшая разработка?
Комментарии:
1. какую модель вы хотите использовать.?
2. Как классификаторы дерева решений, так и knn могут работать с многоклассовыми задачами, поэтому вы можете напрямую передавать им текущие метки
Ответ №1:
Большинство моделей в Sklearn поддерживает мультикласс без кодировки onehot. 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])
Как вы можете видеть, все они поддерживают мультикласс без какой-либо одной горячей кодировки.
Если вы хотите использовать обычную сеть, то вам может потребоваться одно горячее кодирование меток на основе используемой вами функции потерь.
Комментарии:
1. Спасибо. Я подумал, что мне нужно onehotencode. итак, OneHotEncoding предназначен только для обучающего набора, за исключением случаев, когда я делаю нейронную сеть, если я правильно понимаю?
2. На самом деле зависит от реализации. Если вы используете sklearn и используете knn или tree, нет необходимости в одном горячем