Разница между порядковыми и категориальными данными, как метки в scikit учатся - PullRequest
0 голосов
/ 29 января 2020

Я знаю, что в качестве признаков порядковым данным могут быть присвоены произвольные числа, и OneHotEncoding можно выполнить для категориальных данных . Но я немного запутался, как эти два типа данных должны обрабатываться, когда они являются функцией, которая должна быть предсказана. Например, в наборе данных iris в scikitlearn:

iris = datasets.load_iris()
X = iris.data
y = iris.target

, в то время как y представляет три типа цветов, которые являются категориальными данными (если я не ошибаюсь ?!), он кодируется как порядковые значения 0,1 , 2 (тип = int32). Мой набор данных также включает в себя 3 независимые категории («больной», «носитель», «здоровый»), и scikitlearn принимает их как строки без какого-либо кодирования.

Мне было интересно, правильно ли хранить их, поскольку они должны использоваться scikitlearn или аналогичным кодированием, как это требуется для набора данных iris, который требуется?

Ответы [ 2 ]

1 голос
/ 30 января 2020

Вам не нужно кодировать свой ярлык. Scikitlearn заботится об этом. Та же таблица, использованная для построения классификатора:

from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
X, y = load_iris(return_X_y=True)
clf = LogisticRegression(random_state=0).fit(X, y)
clf.predict(X[:2, :])
clf.predict_proba(X[:2, :])
clf.score(X, y)

, и я просто делаю таблицу меньшего размера и меняю лабеллы с целого на строку:

X1 = X[:5]
y1 = y[:5]
y1 = ['a', 'a', 'a','b', 'a']
clf = LogisticRegression(random_state=0).fit(X1, y1)
clf.predict(X1[:2, :])
clf.predict_proba(X1[:2, :])
clf.score(X1, y1)

и все хорошо.

0 голосов
/ 13 февраля 2020

Кажется, что в ML мы либо работаем с непрерывными данными, которые будут обрабатываться регрессионными моделями, либо они являются категориальными, которые будут обрабатываться классификационными моделями. Для порядковых данных отдельной категории не существует.

...