机器学习中的特征变量及处理总结

  牢记一句话:“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已”。
  机器学习的根本目标,就是用数据的特征变量去对目标变量进行预测。那么我们所遇到的特征变量有哪些种类呢?各个种类又该如何处理呢?
  总体而言,所有的特征变量可以归为两大类:定性特征和定量特征,我们依次看一下。

1. 定性特征变量

  定性特征变量,泛指 分类变量/属性变量(qualitative, categorical or attribute variable),比如种族(满汉蒙回…),性别(男和女),年级(小学、初中、高中)。
  对定性特征变量细分,又可以分两种:定类变量(Norminal Data)和定序变量(Ordinal Data),区别在于定类变量间没有大小、先后等关系(比如性别),而定序变量有对应关系(比如年级)。

1.1 定类变量处理

  变量的不同取值仅仅代表了不同类的事物,这样的变量叫定类变量。问卷的人口特征中最常使用的问题,而调查被访对象的“性别”,就是 定类变量。对于定类变量,加减乘除等运算是没有实际意义的。
  在机器学习的数据预处理中,对于定类变量通常可以使用one-hot编码进行处理,本质上就是将定类变量的类别转换为两两正交的向量,保证类别之间的独立性。由于编码成的向量长度为类别的数目,所以one-hot编码可能导致特征空间变得非常大,导致维度灾难,这个时候可以考虑降维处理,即one-hot encoding + PCA的方式。
如下示例代码:

from sklearn import preprocessing as prep
enc = prep.OneHotEncoder()
X = [['male', 'from US', 'uses Safari'], ['female', 'from Europe', 'uses Firefox']]
enc.fit(X)

enc.transform([['female', 'from US', 'uses Firefox'],
               ['male', 'from Europe', 'uses Safari']]).toarray()
array([[1., 0., 0., 1., 1., 0.],
   [0., 1., 1., 0., 0., 1.]])

其中,可以看到特征空间维度从3变成了6。

1.2 定序变量处理

  变量的值不仅能够代表事物的分类,还能代表事物按某种特性的排序,这样的变量叫定序变量。问卷的人口特征中最常使用的问题“教育程度“,定序变量的值之间可以比较大小,或者有强弱顺序,但两个值的差一般没有什么实际意义。
  定序变量一般使用OrdinalEncoder或者LabelEncoder来进行处理,这两者本质上作用是一样的,区别在于接受的参数不同。参见 Difference between OrdinalEncoder and LabelEncoder
示例代码如下:

from sklearn import preprocessing as prep
labelEnc = prep.LabelEncoder()
labelEnc.fit(["S1", "S2", "S1", "S3"])
print(labelEnc.classes_)
labelEnc.transform(["S1", "S3", "S1", "S2", "S3"])
['S1' 'S2' 'S3']
array([0, 2, 0, 1, 2], dtype=int64)
from sklearn import preprocessing as prep
ordinalEnc = prep.OrdinalEncoder()
ordinalEnc.fit([["S1", "d1"],["S2", "d3"], ["S2", "d2"]])
ordinalEnc.categories_
ordinalEnc.transform([["S2", "d1"],["S1", "d3"], ["S2", "d2"]])
array([[1., 0.],
   [0., 2.],
   [1., 1.]])

2. 定量特征变量

  定量特征变量泛指数值变量(quantitative or numeric variable),比如温度,年龄,收入,这些都可以用数值表示的。
  对定量特征变量细分,可以分为两种:定距变量(Interval Data)和 定比变量(Ratio Data),两者一般不做特别区分,仅有的区别在于“定距变量取值为“0”时,不表示“没有”,仅仅是取值为0;定比变量取值为“0”时,则表示“没有””。
  在定量特征变量中,有的变量只能取到特定的数值,叫做离散变量,比如火车数量只能是整数;有的变量可以取到任意连续值,叫做连续变量,比如质量。
  对于离散的变量,我们往往可以直接灌入到模型当中;但是对于连续变量由于取值无限多,对很多机器学习算法不友好,因此需要进行离散化处理。
  下面将单独总结一篇文章,讲《连续特征的离散化》。

3. 总结

一表总结各种特征变量区别。
在这里插入图片描述

  • 7
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在机器学习,annotation是指对数据进行手动标注或注释的过程,这些标注或注释可以是文本标签、图像标注、语音标注等。 annotation的目的是为了将数据转化为能够被机器学习算法处理的形式,以便于训练模型。 Label是指对于annotation标注的数据进一步给出的分类或标签,它是annotation的一种具体化。例如,对于一张图片,annotation可能会标注出它的背景、人物、物品等元素,而label则是对这些元素进一步进行分类,例如把人物分为男性和女性,或者把物品分为椅子、桌子和门等。 总的来说,annotation是一个更宽泛的概念,它指的是对数据进行手动标注的过程,而label则是annotation的一种具体化,是对于标注的数据进一步进行分类或标签的过程。 ### 回答2: 在机器学习,Annotation(标注)和Label(标签)是两个相关但又有区别的概念。 首先,Annotation是对数据进行标记和注释的过程,它可以是人工标注或者是自动化的生成。通过Annotation,我们可以为每个数据点添加额外的信息,以帮助机器学习模型理解和学习。 而Label则是对数据的分类或者回归结果的标识。它是机器学习问题的目标变量,用来指导模型学习和预测的目标。Label表示了我们希望模型从数据学习到的信息。 具体来说,Annotation通常是在数据准备和预处理阶段进行的,标记者会根据任务需求为数据标注不同的属性、特征或者标识,以便用于训练和评估模型。例如,在图像识别任务,标记者可以为每个图像标注对象的位置、形状或者类别等信息。 相比之下,Label是作为一个固定的属性与数据点相关联的。在训练模型时,我们使用带有正确Label的数据来训练模型,让模型能够学习到特征与Label之间的关系,从而进行分类、回归或者其他预测任务。例如,在垃圾邮件分类问题,Label可能分为垃圾邮件和非垃圾邮件两个类别,模型的目标就是根据邮件的特征来准确地判断其类别总结来说,Annotation是对数据进行标记和注释的过程,它可以为数据添加额外的信息;而Label是用于机器学习任务的目标变量,它指导模型的学习和预测。Annotation为Label的生成提供了基础和准备,两者相互依存且共同促进机器学习的发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值