Skip to content

Latest commit

 

History

History
58 lines (45 loc) · 4.13 KB

Feature-handling.md

File metadata and controls

58 lines (45 loc) · 4.13 KB

特征处理

注意:在模型 > 设置 > 特征Tab中对特征处理设置 DSS中大多数机器学习引擎只能处理无缺失值的数值特征。 DSS允许用户在进行模型训练前指定变量的预处理方法。

角色

特征角色决定在机器学习过程中如何处理模型。

  • 拒绝意思是不适用特征。
  • 输入意思是特征将用于训练模型,要么作为预测目标,要么用于[聚类]。(Unsupervised.md)
  • 仅用于显示意思是特征不用于训练模型,但是用于标记模型输出。该角色当前值用于聚类模型。

变量类型

特征的变量类型决定在机器学习过程中特征的处理选项。

  • 类别型变量是枚举列表中的值。对于类别型特征的处理目标是对类别进行编码以确保它可以被作为数值处理。
  • 数值型变量可以进行加减乘除运算。在有些时候把有限的数值型变量当作类别型变量也是很有用的。
  • 文本型变量是任意的文本块。如果文本型变量中包含有限的多个值,可以把它看作是类别型变量。

类别型变量处理

  • 类别处理和缺失值处理方法及其控制定义了如何处理类别型变量。

  • **Dummy-encoding(向量化)**创建一个包含了0/1标机值并且长度与类型长度一致的向量。可以删除其中的一个变量以使得它们不是线性独立的,或者让Dataiku来决定。虚拟编码的数量是有限制的,它是根据类别的最大值,重复最多的行占所占的比例,以及每个类别中最小的样本数量决定的。

  • 用0/1标记来表示是否存在。

  • 影响编码。

  • 特征哈希(对与高基数)。

数值变量处理###

数值处理和缺失值处理方法及其控制定义了如何处理数值变量。

  • 保留数值特征允许在训练前对特征进行缩放,这在某些情况下会提高模型性能。标准缩放可以将特征标准偏差调整为1,平均值调整为0。最小-最大缩放可将特征的最小值调整为0,最大值调整为1。此外,在缩放之后,可以派生出其他特征来输入到模型中,例如sqrt(x),x^2,...。如果变量的绝对值存在较大差异,可以对变量进行重新缩放。
  • 用0/1标记来表示是否存在
  • 基于阈值的二值化 将大于或者小于阈值的特征替换为0/1标机值。
  • 使量化用特征经验分布的分位数替换特征值。

文本变量处理

缺失值

处理类别型和数值型特征有多种处理方式。

  • 视为是常规值(仅类别型特征)将缺失值视为一个唯一的类别。这用于结构上缺少不可测量的数据,例如,具有加拿大地址的美国州。
  • Impute将缺失值替换为指定的值。这用于处理因随机噪音导致的随机缺失数据。
  • 丢弃行在构建模型是丢弃具有缺失值的行。避免丢弃行,除非缺失数据很稀少。

自定义预处理

DSS允许用户定义自定义Python预处理,可以以插件的方式插入用户定义的特征处理代码。这可以通过在特征处理选项中选择“自定义预处理”来完成。实现的方式是在一个类中实现两个方法:

def fit(self, series):
def transform(self, series):

在此处,series是一个表示特征列的pandas series对象。fit方法无需返回值,只需要按需实现数据修改逻辑。transform方法需要返回一个pandas Dataframe或者一个2维numpy数组或者scipy.sparse.csr_matrix来保存预处理结果。注意单个处理器可能返回多个数值特征,这对应于输出的列。如果选择numpy 数组或scipy.sparse.csr_matrix,处理器需要一个“名称”属性,它包含了输出特征的名称列表。

为在可视化UI中适用自定义处理器,需要在代码编辑器中导入并初始化它,然后赋值给“processor”变量,如下:

from mymodule import MyProcessor
processor = MyProcessor()

对于任何Python代码组建,类必须定义在文件中并保存在data路径中的lib/python目录下。