我的数据中有这样的行:
0,tcp,http,SF,181,5450,0,0,0.5,normal.
我想使用决策树算法进行训练。我无法创建LabeledPoints,所以我想尝试HashingTF用于字符串,但我无法处理它。 "正常"是我的目标标签。如何创建要在pyspark中使用的LabeledPoint RDD数据?此外,Label for LabeledPoint需要加倍,我应该为标签创建一些双倍值还是应该进行散列?
答案 0 :(得分:0)
我想出了解决方案。
首先,Spark的决策树分类器已经有了一个参数:categoricalFeaturesInfo
。在pyspark api文档中:
categoricalFeaturesInfo - 从分类要素索引到类别数量的映射。此地图中没有的任何功能都被视为连续。
然而,在这之前,我们首先应该简单地将字符串替换为pypsark的数字来理解它们。
然后我们为上面的示例创建数据categoricalFeaturesInfo
,如下定义:
categoricalFeaturesInfo = {1:len(feature1), 2:len(feature2), 3:len(feature3), 9:len(labels)}
简单来说,第一个是分类特征的索引,第二个是该特征中的类别数。
请注意,将字符串转换为数字对于训练器算法来说已足够,但如果您声明这样的分类功能,它会更快地训练。