打赏

机器学习概念之特征选择(Feature selection)之VectorSlicer算法介绍

 

 

  不多说,直接上干货!

 

VectorSlicer

算法介绍:

        VectorSlicer是一个转换器,输入特征向量,输出原始特征向量子集。VectorSlicer接收带有特定索引的向量列,通过对这些索引的值进行筛选得到新的向量集。

可接受如下两种索引:

  1、整数索引,setIndices()。

  2、字符串索引代表向量中特征的名字,此类要求向量列有AttributeGroup,因为该工具根据Attribute来匹配名字字段。

  指定整数或者字符串类型都是可以的。

  另外,同时使用整数索引和字符串名字也是可以的。不允许使用重复的特征,所以所选的索引或者名字必须是没有独一的。

  注意如果使用名字特征,当遇到空值的时候将会报错。

  输出将会首先按照所选的数字索引排序(按输入顺序),其次按名字排序(按输入顺序)。

 

 

 

示例:
  假设我们有一个DataFrame含有userFeatures列:

userFeatures

------------------

 [0.0, 10.0, 0.5]

  userFeatures是一个向量列包含3个用户特征。假设userFeatures的第一列全为0,我们希望删除它并且只选择后两项。我们可以通过索引setIndices(1,2)来选择后两项并产生一个新的features列:

userFeatures     | features

------------------|-----------------------------

 [0.0, 10.0, 0.5] | [10.0, 0.5]

 

 

  假设我们还有如同["f1","f2", "f3"]的属性,那可以通过名字setNames("f2","f3")的形式来选择:

userFeatures     | features

------------------|-----------------------------

 [0.0, 10.0, 0.5] | [10.0, 0.5]

 ["f1", "f2","f3"] | ["f2", "f3"]

 

 

 

  具体编程见

Spark MLlib编程API入门系列之特征选择之向量选择(VectorSlicer)

posted @ 2017-08-19 14:34  大数据和AI躺过的坑  阅读(518)  评论(0编辑  收藏  举报