0

我知道作为特征,序数数据可以分配任意数字,OneHotEncoding 可以用于分类数据。但是当这两种类型的数据是要预测的特征时,应该如何处理它们,我有点困惑。例如在 scikitlearn 的 iris 数据集中:

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

虽然 y 代表三种类型的花,这是一个分类数据(如果我没有错?!),它被编码为 0,1,2 的序数值(type=int32)。我的数据集还包括 3 个独立的类别('sick'、'carrier'、'healthy'),scikitlearn 将它们作为字符串接受,没有任何类型的编码。

我想知道保留它们是否正确,因为它们将由 scikitlearn 使用,或者需要像对 iris 数据集所做的类似编码?

4

2 回答 2

1

您无需对标签进行编码。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)

一切都很好。

于 2020-01-29T22:05:12.290 回答
0

似乎在 ML 中,我们要么处理将由回归模型处理的连续数据,要么它们是由分类模型处理的分类数据。序数数据没有单独的类别。

于 2020-02-12T22:07:46.930 回答