【问题标题】:Create LabeledPoint from rdd data which has both strings and numbers - PySpark从具有字符串和数字的 rdd 数据创建 LabeledPoint - PySpark
【发布时间】:2016-03-27 05:59:39
【问题描述】:

我的数据中有这样的行:

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

我想使用决策树算法进行训练。我无法创建 LabeledPoints,所以我想尝试对字符串使用 HashingTF,但我无法处理它。 “正常”是我的目标标签。如何创建 LabeledPoint RDD 数据以在 pyspark 中使用?此外,LabeledPoint 的标签需要双精度,我应该为标签创建一些双精度值还是应该对其进行哈希处理?

【问题讨论】:

标签: python apache-spark pyspark rdd


【解决方案1】:

我想出了解决方案。

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

categoricalFeaturesInfo - 从分类特征索引映射到类别数量。任何不在此地图中的要素都被视为连续要素。

但是,在这样做之前,我们首先应该简单地将字符串替换为数字,以便 pypsark 理解它们。

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

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

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

请注意,将字符串转换为数字对于训练器算法就足够了,但如果您声明这样的分类特征,它会训练得更快。

【讨论】:

    猜你喜欢
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多