有必要在分类目标变量的数字编码?(Is numerical encoding necessary f

2019-09-26 13:19发布

我使用sklearn文本分类,我的所有的功能都是数字,但是我的目标变量标签文本。 我能理解其背后的编码功能NUMERICS的理由,但不认为这适用于目标变量?

Answer 1:

如果你的目标变量是文本形式,可以将其转化为数字形式(或者你可以不理会它,请参阅我下面的注释),以便任何Scikit学习算法来接它的OVA(一比所有)方案:你的学习算法将尝试猜测每个类作为对剩余的人相比,只有当他们将被改造成数字代码,从0开始(班数 - 1)。

例如,在这个例子从Scikit-学习文档,你可以计算出班级的虹膜,因为有三个模型评估每个可能的类:

  • 类0与1级和2
  • 类1类与0和2
  • 类2与等级0和1

当然,类0,1和2是Setosa,云芝和锦葵,但算法需要它们表示为数字代码,因为你可以通过探索的示例代码的验证结果:

list(iris.target_names)
['setosa', 'versicolor', 'virginica']

np.unique(Y)
array([0, 1, 2])

注:本身Scikit学习编码目标的标签,如果他们是字符串这是真的。 在Scikit学习的Github的页面逻辑回归( https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/linear_model/logistic.py ),你可以在行1623和1624代码调用哪里看标签编码器,它会自动编码标签:

 # Encode for string labels label_encoder = LabelEncoder().fit(y) y = label_encoder.transform(y) 


文章来源: Is numerical encoding necessary for the target variable in classification?