从包含字符串和数字的rdd数据创建LabeledPoint - PySpark

时间:2016-03-16 16:03:44

标签: python apache-spark pyspark rdd

我的数据中有这样的行:

0,tcp,http,SF,181,5450,0,0,0.5,normal.

我想使用决策树算法进行训练。我无法创建LabeledPoints,所以我想尝试HashingTF用于字符串,但我无法处理它。 "正常"是我的目标标签。如何创建要在pyspark中使用的LabeledPoint RDD数据?此外,Label for LabeledPoint需要加倍,我应该为标签创建一些双倍值还是应该进行散列?

1 个答案:

答案 0 :(得分:0)

我想出了解决方案。

首先,Spark的决策树分类器已经有了一个参数:categoricalFeaturesInfo。在pyspark api文档中:

  

categoricalFeaturesInfo - 从分类要素索引到类别数量的映射。此地图中没有的任何功能都被视为连续。

然而,在这之前,我们首先应该简单地将字符串替换为pypsark的数字来理解它们。

然后我们为上面的示例创建数据categoricalFeaturesInfo,如下定义:

categoricalFeaturesInfo = {1:len(feature1), 2:len(feature2), 3:len(feature3), 9:len(labels)}

简单来说,第一个是分类特征的索引,第二个是该特征中的类别数。

请注意,将字符串转换为数字对于训练器算法来说已足够,但如果您声明这样的分类功能,它会更快地训练。