欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

DataVec/转换-3

程序员文章站 2022-03-01 19:54:51
...

RemoveAllColumnsExceptForTransform 移除指定列的转换 

[源码]

 

 该转换移除除显式指定的作为保留的列之外的所有列。

 

public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象
mapSequence
public Object mapSequence(Object sequence) 

转换一个序列

  • 参数sequence为要转换的序列
outputColumnName
public String outputColumnName() 

运算被执行后输出的列名

  • 返回输出列名
columnName
public String columnName() 

输出列名,这将经常和输入相同

  • 返回输出列名
RemoveColumnsTransform  移除列转换

[源码]

Remove the specified columns from the data. To specify only the columns to keep,

从数据中移除指定的列。来指定需人保留的列。

public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象
mapSequence
public Object mapSequence(Object sequence) 

转换一个序列

  • 参数sequence为要转换的序列
outputColumnName
public String outputColumnName() 

运算被执行后输出的列名

  • 返回输出列名
columnName
public String columnName() 

输出列名,这将经常和输入相同

  • 返回输出列名

RenameColumnsTransform 重命名列转换

[source]

重命名一个或多个列

 
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象
mapSequence
public Object mapSequence(Object sequence) 

转换一个序列

  • 参数sequence为要转换的序列
outputColumnName
public String outputColumnName() 

运算被执行后输出的列名

  • 返回输出列名
columnName
public String columnName() 

输出列名,这将经常和输入相同

  • 返回输出列名

ReorderColumnsTransform  重排序列转换

[源码]

重排序列。注意:这里可以使用列的部分列表。没有明确提到的任何列都将放在输出中的列之后,而不改变它们的相对顺序。

 

transform
public Schema transform(Schema inputSchema) 
  • 参数newOrder是输列中一部份或全部列
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象
mapSequence
public Object mapSequence(Object sequence) 

转换一个序列

  • 参数sequence为要转换的序列
outputColumnName
public String outputColumnName() 

运算被执行后输出的列名

  • 返回输出列名
columnName
public String columnName() 

输出列名,这将经常和输入相同

  • 返回输出列名
ConditionalCopyValueTransform  有条件复制值变换

[源码]

 

如果条件满足,从另外一个列取值将指定的列值替换。需要注意的是条件可以是任何通用条件,包括在其它列上,不同于如果满足条件的情况下将被修改的列。注意:对于序列,此转换使用将序列中的每个步骤传递给条件,并分别替换(或不替换)的约定(即,Condition.condition(List)在每个时间步骤上被使用)。

 

 

transform
public Schema transform(Schema inputSchema) 
  • 参数columnToReplace是需要被替换旧值的列
  • 参数sourceColumn是用来获取新值的列名
  • 参数condition是条件
 
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象
mapSequence
public Object mapSequence(Object sequence) 

转换一个序列

  • 参数sequence为要转换的序列
outputColumnName
public String outputColumnName() 

运算被执行后输出的列名

  • 返回输出列名
columnName
public String columnName() 

输出列名,这将经常和输入相同

  • 返回输出列名

ConditionalReplaceValueTransform  有条件替换值转换

[源码]

如果条件满足,在指定的列中用新值替换旧值。注意,条件可以是任何通用条件,包括在其他列上,不同于如果条件满足则将修改的列。

注意:对于序列,此转换使用将序列中的每个步骤传递给条件,并分别替换(或不替换)的约定(即,Condition.condition(List)在每个时间步骤上被使用)。

 

transform
public Schema transform(Schema inputSchema) 
  • 参数columnToReplace是如果条件成立需要用新值替换旧值的列
  • 参数 newValue是要使用新值
  • 参数condition是条件 
 
 
map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象
mapSequence
public Object mapSequence(Object sequence) 

转换一个序列

  • 参数sequence为要转换的序列
outputColumnName
public String outputColumnName() 

运算被执行后输出的列名

  • 返回输出列名
columnName
public String columnName() 

输出列名,这将经常和输入相同

  • 返回输出列名

ConditionalReplaceValueTransformWithDefault 

[源码]

 

如果条件满足,将指定的列的值替换为指定的“yes”值,如果不满足条件,替换为指定的“no”值。

注意,条件可以是任何通用条件,包括在其他列上,不同于如果条件满足则将修改的列。

注意:对于序列,此转换使用将序列中的每个步骤传递给条件,并分别替换(或不替换)的约定(即,Condition.condition(List)在每个时间步骤上被使用)。


ConvertToDouble

[源码]

把任何值转换为双精度类型

map
public DoubleWritable map(Writable writable) 
  • 参数column是要转换为双精度类型的列名

DoubleColumnsMathOpTransform 双精度列数学运算变换

[源码]

添加一个新的双精度列,从一个或多个别的列计算而来。一个新列(指定的名称)作为输出的最终列被添加。没有别的列被修改。

例如,如果新列的名称==”newCol”, 数学运算==Add, 并且参与运算的列=={“col1”,”col2”},那么名为newCol的输出列的值为col1+col2。

 

 
map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象
mapSequence
public Object mapSequence(Object sequence) 

转换一个序列

  • 参数sequence为要转换的序列

DoubleMathFunctionTransform 双精度函数转换 

[源码]

一个简单的转换,用于数学运算,例如sin(x), ceil(x)等


DoubleMathOpTransform 双精度数学运算转换

[源码]

 

双精度数学运算。

这是一个内部的双精度列值和双精度标量的运算。

 

 
map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象
mapSequence
public Object mapSequence(Object sequence) 

转换一个序列

  • 参数sequence为要转换的序列

Log2Normalizer  Log2归一化器

[源码]

通过log2((in-列最小值)/(均值-列最小值) + 1)的比例来归一化。in的范转是 (列最小值 到  无穷大) 到 (0 到 无穷大)。最适合于具有几何/负指数型分布的值。

 

 

map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象

MinMaxNormalizer 最小值最大值归一化器

[源码]

 

用于建立 (最小值 到 最大值) -> (新最小值 到新最大值)的线性映射的归一化器

数学:(新最大值-新最小值)/(最大值-最小值) (x-最小值) + 新最小值

 

 

 
map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象

StandardizeNormalizer 标准化归一化器

[源码]

使用(X-MIN)/STDEV归一化。也称为标准分数、标准化等。 

 
map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象

SubtractMeanNormalizer 减法平均值归一化器

[源码]

通过减去平均值归一化

map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象

ConvertToInteger 转换为整型

[源码]

把任意值转换为整型。

map
public IntWritable map(Writable writable) 
  • 参数column是用来转换为整型的列名。

IntegerColumnsMathOpTransform 整型列数学运算转换

[源码]

添加一个新的整型列,从一个或多个别的列计算而来。一个新列(指定的名称)作为输出的最终列被添加。没有别的列被修改。

例如,如果新列的名称==”newCol”, 数学运算==Add, 并且参与运算的列=={“col1”,”col2”},那么名为newCol的输出列的值为col1+col2。

注意:如果要求十进制输出值,则这里使用除法。

 

 

 

toString
public String toString() 
  •  参数newColumnName是输出列的列名newColumnName
  • 参数mathOp是数学运算。这里只允许加法/乘法/除法/求模。
  • 参数columns是参与数学运算的列
 
map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象
mapSequence
public Object mapSequence(Object sequence) 

转换一个序列

  • 参数sequence为要转换的序列

IntegerMathOpTransform 整型数学运算

[源码]

 

整型数学运算 

这是一个内部的整型列值和整型标量的运算。

 

 

map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象

IntegerToOneHotTransform 整型到OneHot码骗转换

[源码]

 

把一个整型列转换为one-hot列集合

map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象
mapSequence
public Object mapSequence(Object sequence) 

转换一个序列

  • 参数sequence为要转换的序列
outputColumnName
public String outputColumnName() 

运算被执行后输出的列名

  • 返回输出列名
columnName
public String columnName() 

输出列名,这将经常和输入相同

  • 返回输出列名

ReplaceEmptyIntegerWithValueTransform 用指定值替换空的整型转换

[源码]

 

用一个值替换空白缺失的整型数据

map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象

ReplaceInvalidWithIntegerTransform 用整型替换无效值转换

[源码]

用指定的整数替换列中无效的整数

 

map
public Object map(Object input)  

 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象

LongColumnsMathOpTransform 整型列数学运算转换

[源码]

添加一个新的长整型列,从一个或多个别的列计算而来。一个新列(指定的名称)作为输出的最终列被添加。没有别的列被修改。

例如,如果新列的名称==”newCol”, 数学运算==Add, 并且参与运算的列=={“col1”,”col2”},那么名为newCol的输出列的值为col1+col2。

 

map
public Object map(Object input)  

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象

mapSequence

public Object mapSequence(Object sequence)  

 

转换一个序列

  • 参数sequence为要转换的序列

LongMathOpTransform 长整型数学计算转换 

[源码]

 

长整型数学运算

这是一个内部的长整型列值和长整型标量的运算。

 

map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象

TextToCharacterIndexTransform 文本到字符索引转换

[源码]

 

将一个序列中的每个文本值转换为一个较长的整数索引序列。例如,“abc” 将被转换为 [1, 2, 3]。其他列中的值将被复制。

 

 

 


TextToTermIndexSequenceTransform 文本到词元索引序列转换 

[源码]

 

 

将一个序列中的每个文本值转换为一个较长的整数索引序列。例如,zero one two” 将被转换为 [0, 1, 2。其他列中的值将被复制。

 

SequenceDifferenceTransform 序列差分转换

[源码]

 

对于一个输入序列,计算一个列上的差异。对于每一个时间t,计算someColumn(t) - someColumn(t-s), 这个 s >= 1 是“回环”期.

 


注意:在t=0(在序列中的第一个步骤;或更通常的,所有小于s的时间t),这些时间步没有之前的值:

1.默认:输出=someColumn(t) - someColumn(max(t-s, 0))

2.指定值:如果t-s >= 0或一个定制的Writable对象(例如,a DoubleWritable(0) 或 NullWritable)那么输出= someColumn(t) - someColumn(t-s)

注意:这是一个原地的运算:每个列的值被修改。如果原始值进行了差分运算,则原地复制。

 

outputColumnName
public String outputColumnName() 

用默认的回环1创建一个序列差分转换,并使用FirstStepMode.Default。输出列与输入列一样。

 

  • 参数columnName是进行进算的列名
columnName
public String columnName() 

输出列名,这将经常和输入相同

  • 返回输出列名
map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象
mapSequence
public Object mapSequence(Object sequence) 

转换一个序列

  • 参数sequence为要转换的序列

SequenceMovingWindowReduceTransform 序列移动窗口缩减变换

[源码]

序列移动窗口缩减变换:添加一个新列,它的值是:

(a)使用单个列中最后n个值的窗口

(b)在窗口上应用一个缩减操作来计算一个新值,例如,这个转换器可以用于实现一个最后n个值的一个简单移动平均,或确定最后N个时间步长中的最小值或最大值。

 

 

 

defaultOutputColumnName 
public static String defaultOutputColumnName(String originalName, int lookback, ReduceOp op) 

 

枚举指定如何处理每个实例:例如,对于一个周期为20的回环,第一个19的输值应该怎么计算?

默认:和通常一样进行以前的缩减,有很多的值可用。

指定值:用指定的值替代实际的输出值。例如,你可以分配0或NullWritable到输出的0到18的位置。

 

 
map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数input是需要转换的对象
  • 返回一个转换后的writable对象
mapSequence
public Object mapSequence(Object sequence) 

转换一个序列

  • 参数sequence为要转换的序列
outputColumnName
public String outputColumnName() 

运算被执行后输出的列名

  • 返回输出列名
columnName
public String columnName() 

输出列名,这将经常和输入相同

  • 返回输出列名

SequenceOffsetTransform 序列偏移转换

[源码]

序列偏移变换采用一个序列,并在一个或多个列中以指定的次数步转换。它具有2种操作模式(OperationType enum),相对于它运行的列:

原处:将在原处进行操作,修改指定列中的值。

新列:操作可能产生新列,原始(源)列保持未修改。

 

此外还有两种模式(EdgeHandling enum)处理原始序列之外的值:

修剪序列:  整个序列被一个指定的步骤修剪

指定值:对任何原始序列之外的值,他们将被给一个指定的值。

 

注意1:当指定偏移量时,它们按如下方式完成:正偏移:将指定列中的值移动到稍后的时间。更早的时间步长要么被修剪要么给定指定的值;这些列中的最后值将被截断/删除。

 

注意2:在使用TrimSequence时必须小心:例如,如果我们在一个数据集上链接多个序列偏移转换,那么最终可能修剪得比我们想象的要多得多。在这种情况下,最终使用指定值可能更好。

 


AppendStringColumnTransform 追加字符串列转换

[源码]

 

在一个列中追加一个字符串

map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数input是需要转换的记录
  • 返回一个转换后的writable对象

ChangeCaseStringTransform 更改大小写字符串转换

[源码]

 

更改一个字符串列的大小写(例如全改为小写)


ConcatenateStringColumns 连接的字符串列

[源码]

 

把一个或多个字符串列连接成一个新的字符串列。保留组成字符串列,所以如果需要,用户必须手动删除他们。

 

TODO: 在数据向量中使用新的字符缩减功能?

 

 

 

transform
public Schema transform(Schema inputSchema) 
  • 参数columnsToConcatenate是输出中的列的部份或所有全部顺序
 
map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数input是需要转换的对象
  • 返回一个转换后的writable对象
mapSequence
public Object mapSequence(Object sequence) 

转换一个序列

  • 参数sequence为要转换的序列
outputColumnName
public String outputColumnName() 

运算被执行后输出的列名

  • 返回输出列名
columnName
public String columnName() 

输出列名,这将经常和输入相同

  • 返回输出列名

ConvertToString 

[源码]

 把任意值转换为字符串

map
public Text map(Writable writable) 

把writable转换为字符串 

  • 参数writable是要进行转换的writable
  • 返回这个writable的字符串
map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数input是需要转换的对象
  • 返回一个转换后的writable对象

MapAllStringsExceptListTransform 映射除了列表外的所有字符转换

[源码]

此方法将所有字符串值(除了指定的列表)映射为单个字符串值。

 

map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数input是需要转换的对象
  • 返回一个转换后的writable对象

RemoveWhiteSpaceTransform 移除空白转换 

[source]

 

移除所有空白字符的转换

map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数input是需要转换的对象
  • 返回一个转换后的writable对象

ReplaceEmptyStringTransform 替换空字符转换

[source]

 

用指定的字符串替换空白字符串

map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数input是需要转换的对象
  • 返回一个转换后的writable对象

ReplaceStringTransform 替换字符转换

[source]

 

替换匹配正则表达式的字符串值

map
public Text map(final Writable writable) 

用指定的参数构建ReplaceStringTransform对象

  • 参数columnName是列的名称
  • 参数map的键是正则表达式;值是用来替换旧值的值。

StringListToCategoricalSetTransform 字符列表到分类集合转换

[源码]

 

 将一个分割后的字符列表转换为一个二分类列。假设可能的字符值为{“a”,”b”,”c”,”d”}并且需要转换的字符列所括了字符“a,c”,那么4个输出列应该有这样的值[“true”,”false”,”true”,”false”]

transform
public Schema transform(Schema inputSchema) 
  • 参数columnName是需要转换的列名
  • 参数newColumnNames是需要创建的新列名 
  • 参数 categoryTokens 是可能存在的令牌。注意:此列表必须具有与新列名称列表相同的长度和顺序。
  • 参数delimiter是用于转换的字符的分割符
map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象
mapSequence
public Object mapSequence(Object sequence) 

转换一个序列

  • 参数sequence为要转换的序列
outputColumnName
public String outputColumnName() 

运算被执行后输出的列名

  • 返回输出列名
columnName
public String columnName() 

输出列名,这将经常和输入相同

  • 返回输出列名
StringListToCountsNDArrayTransform 字符列表到统计的NDArray转换

[源码]

把字符列转换为词袋,作为一个NDArray的统计。

需要注意的是原来的列会被移除

 

transform
public Schema transform(Schema inputSchema) 
  • 属性columnName是要转换的列名
  • 属性vocabulary是可能存在的令牌
  • 属性delimiter是要转换的字符串的分隔符
  • 属性ignoreUnknown代表是否要忽略不认识的令牌
 
map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数param是需要转换的对象
  • 返回一个转换后的writable对象
mapSequence
public Object mapSequence(Object sequence) 

转换一个序列

  • 参数sequence为要转换的序列
outputColumnName
public String outputColumnName() 

运算被执行后输出的列名

  • 返回输出列名
columnName
public String columnName() 

输出列名,这将经常和输入相同

  • 返回输出列名

StringListToIndicesNDArrayTransform 字符列表到索引的NDArray转换

[源码]

 

将字符列转换为稀疏的词袋,代表NDArray的索引。在嵌入到密集数组之前适合嵌入或作为有效存储。


StringMapTransform 字符映射变换

[源码]

一个简单的字符到字符的映射函数。

map中的键为原来的值;map中的值是用来替换原值的值。如果字符出现在数据中但没有在提供的map中出现,这个字符值将不被修改。

map
public Text map(Writable writable) 
  • param columnName Name of the column
  • param map Key: From. Value: To
map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数input是需要转换的记录
  • 返回一个已被转换的writable

DeriveColumnsFromTimeTransform 从时间得到列的变换

[源码]

 

通过获取时间列的值得到一些列。可以用于用年,月,日,小时,分钟,秒等作为新列的例子。

 

map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数input是需要转换的记录
  • 返回一个已被转换的writable
mapSequence
public Object mapSequence(Object sequence) 

转换一个序列

  • 参数sequence为要转换的序列
toString
public String toString() 

运算被应用后输出列名称

  • 返回输出列名称

StringToTimeTransform 字符串到时间转换

[源码]

 

用JodaTime 通过解析日期/时间字符串,把一个字符列转换为时间列。时间格式是按 http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html指定的

getNewColumnMetaData
public ColumnMetaData getNewColumnMetaData(String newName, ColumnMetaData oldColumnType) 

 

初始化时不需要指定一个时间格式。如果这个构造方法被使用,该变换将被允许处理静态格式数组中定义的几种常见变换。

 

  • 参数columnName是字符串列名
  • 参数timeZone是用于解析时间的时区 
map
public Object map(Object input)  

 

把一个对象转换为另外一个对象

  • 参数input是需要转换的记录
  • 返回一个已被转换的writable

TimeMathOpTransform 时间数学运算转换

[源码]

 

在一个时间列上进行数学运算

需要注意的是:仅支持这些数学运算:加法,减法,标量最小值,标量最大值 

对于标量最小值和最大值,时间单位必须是毫秒,值为纪元毫秒格式。

 

 

map
public Object map(Object input) 

把一个对象转换为另外一个对象

  • 参数input是需要转换的记录
  • 返回一个已被转换的writable

有任何问题请联系微信 

DataVec/转换-3
            
    
    博客分类: dl4j dl4jdeeplearning4jjava机器学习

如果您觉得我的文章给了您帮助,请为我买一杯饮料吧!以下是我的支付宝,意思一下我将非常感激!

DataVec/转换-3
            
    
    博客分类: dl4j dl4jdeeplearning4jjava机器学习