Классификация: цель с более чем 2 классами - PullRequest
0 голосов
/ 23 апреля 2019

Я делаю упражнение по классификации и сталкиваюсь с целью более чем с 2 категориальными классами.Я закодировал эти классы, используя Labelencoder.Единственная проблема в том, что я думаю, что мне, возможно, придется использовать Onehotencoding после того, как у меня больше не только ноль и 1, но 0,1,2,3.Реальность такова, что я просто не знаю, примет ли Кнн или Решение Т. это число как классы.Если нет, может кто-нибудь сказать мне, что делать?

Вот моя первая цель:

Good 
bad
medium
excellent

Я изменил это на следующее:

1
3
2
0

Я думаю, мойреальный вопрос в том, может ли это быть непосредственно использовано как классы для моей цели, или мне нужно дальнейшее проектирование?

1 Ответ

0 голосов
/ 23 апреля 2019

Большинство моделей в 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, то вам может потребоваться одно горячее кодирование меток на основе используемой вами функции потерь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...