【问题标题】:Type Error in Gradient Boosted Trees from mllib来自 mllib 的梯度提升树中的类型错误
【发布时间】:2020-10-29 00:20:51
【问题描述】:

我尝试对一些混合类型的数据运行梯度提升树算法:

[('feature1', 'bigint'),
 ('feature2', 'int'),
 ('label', 'double')]

我尝试了以下

from pyspark.mllib.tree import GradientBoostedTrees, GradientBoostedTreesModel
from pyspark.ml.feature import VectorAssembler
from pyspark.mllib.linalg import Vector as MLLibVector, Vectors as MLLibVectors
from pyspark.mllib.regression import LabeledPoint

vectorAssembler = VectorAssembler(inputCols = ["feature1", "feature2"], outputCol = "features")

data_assembled = vectorAssembler.transform(data)
data_assembled = data_assembled.select(['features', 'label'])
data_assembled = data_assembled.select(F.col("features"), F.col("label"))\
  .rdd\
  .map(lambda row: LabeledPoint(MLLibVectors.fromML(row.label), MLLibVectors.fromML(row.features)))

(trainingData, testData) = data_assembled.randomSplit([0.9, 0.1])

model = GradientBoostedTrees.trainRegressor(trainingData,
                                            categoricalFeaturesInfo={}, numIterations=100)

但是我收到以下错误:

TypeError: Unsupported vector type <class 'float'>

但我的类型实际上都不是浮动的。此外,如果相关,feature2 是二进制的。

【问题讨论】:

    标签: pyspark apache-spark-mllib


    【解决方案1】:

    我最终避免了 mllib 实现,而是使用了 Spark ML:

    from pyspark.ml.feature import VectorAssembler
    from pyspark.ml.regression import GBTRegressor
    
    vectorAssembler = VectorAssembler(inputCols = ["feature1", "feature2"], outputCol = "features")
    
    data_assembled = vectorAssembler.transform(data)
    data_assembled = data_assembled.select(F.col("label"), F.col("features"))
    
    (trainingData, testData) = data_assembled.randomSplit([0.7, 0.3])
    
    gbt_model = GBTRegressor(featuresCol="features", maxIter=10).fit(trainingData)
    

    Python 没有 LabeledPoint 对象所需的双精度类型,因此我假设 pyspark 的映射导致转换为浮点数。

    【讨论】:

      猜你喜欢
      • 2019-06-27
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 2018-11-29
      • 2015-07-12
      • 2020-04-10
      • 2018-08-21
      • 2019-12-04
      相关资源
      最近更新 更多