scikit 学习中作为标签的序数数据和分类数据之间的区别
Difference between ordinal and categorical data as labels in scikit learn
我知道这是特征 。但是我有点困惑,当它们是要预测的特征时,应该如何处理这两类数据。例如在 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 数据集完成的。
您不需要对标签进行编码。 scikitlearn 会处理它。同样 table 用于构建分类器:
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)
我只是做了一个更小的 table 并将标签从整数更改为字符串:
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)
一切都很好。
似乎在 ML 中,我们要么处理将由回归模型处理的连续数据,要么处理将由分类模型处理的分类数据。序数数据没有单独的类别。
我知道这是特征
iris = datasets.load_iris()
X = iris.data
y = iris.target
虽然 y 代表三种类型的花,这是一个分类数据(如果我没记错的话?!),它被编码为序数值 0,1,2 (type=int32)。我的数据集还包括 3 个独立的类别('sick'、'carrier'、'healthy'),并且 scikitlearn 接受它们作为没有任何类型编码的字符串。
我想知道保留它们是否正确,因为它们将被 scikitlearn 或类似的编码使用,因为它是为 iris 数据集完成的。
您不需要对标签进行编码。 scikitlearn 会处理它。同样 table 用于构建分类器:
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)
我只是做了一个更小的 table 并将标签从整数更改为字符串:
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)
一切都很好。
似乎在 ML 中,我们要么处理将由回归模型处理的连续数据,要么处理将由分类模型处理的分类数据。序数数据没有单独的类别。