Java Spark ML(Dataframe API)手动分类赋值

时间:2017-03-08 01:16:54

标签: java apache-spark

Java Spark ML(Dataframe API)手动分类分配

我正在使用Spark的Java API来运行随机林,我在设置混合了分类变量和连续变量的数据时遇到了问题。

我有一个数据集,我正在从一个包含字符串,双打等等的镶木地板文件中加载...我想将其转换为可用于随机森林的数据集。

我知道我需要将数据转换为矢量(通过像VectorAssembler这样的东西),但问题是分类变量。我不知道如何手动将矢量分配到分类变量中。我不想使用一个热门编码(因为我有一些30多个类别的变量),所以我使用StringIndexer来创建进入矢量的分类列。

我遇到的关键问题是我不能使用VectorIndexer()的setMaxCategories()选项然后设置分类变量,因为我有一些列是双倍的,具有少于30个唯一值。我的分类变量也有不同程度的不同级别。

我基本上想要一种方法来手动分配“哪些”列(按索引或者然而来说)将是分类的,我找不到任何方法来做到这一点。我确信我在这里缺少一些课程或方法。

我想出了一个“愚蠢”的方法,但必须有一个更好的方法。 “愚蠢”的方式是:

  1. 对于每个单独的String列
    • 运行StringIndexer(创建一个包含索引而不是字符串的新列)
    • 运行VectorAssembler(创建一个只有上面一列的向量)
    • 运行VectorIndexer(使用上面的单列向量输入并在setMaxCategories()中放入一个不可重复的高值
  2. 将所有单列向量合并为一个包含所有列的向量。
  3. 必须有更好的方法来做到这一点,......任何人都有任何想法吗?

0 个答案:

没有答案