machine-learning - scikit learn 中序数数据和分类数据作为标签的区别

标签 machine-learning scikit-learn label-encoding

我知道作为功能 ordinal data could be assigned arbitrary numbers and OneHotEncoding could be done for categorical data 。但我有点困惑,当这两类数据是要预测的特征时,应该如何处理它们。例如,在 scikitlearn 的 iris 数据集中:

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

虽然 y 代表三种类型的花,这是一个分类数据(如果我没记错的话?!),它被编码为 0,1,2 的序数值(type=int32)。我的数据集还包括 3 个独立的类别(“生病”、“携带者”、“健康”),scikitlearn 接受它们作为字符串,无需任何类型的编码。

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

最佳答案

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

一切都好。

关于machine-learning - scikit learn 中序数数据和分类数据作为标签的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59974434/

相关文章:

python - 如何向矢量化数据集添加特征?

machine-learning - Tensorflow和Scikitlearn log_loss函数实现的区别

python - 将 sklearn 的 RandomizedSearchCV 与 SMOTE 过采样仅用于训练折叠

python - 如何将 LabelEncoder 应用于 Pandas 数据框中的特定列

python - 值错误: The truth value of a Series is ambiguous in one hot encoding error

c - 如何理解Locality Sensitive Hashing?

python - 当新数据到来时,如何重新训练 pyspark 中保存的线性回归 ML 模型

python - 我可以为 sklearn SVM 显式设置可能的类列表吗?

python - scipy非线性曲线拟合中的过度拟合

python - 使用 LabelEncoder 转换数据