pyspark GBT分类器输出中的其他列

时间:2018-07-20 11:29:09

标签: python apache-spark pyspark

在pyspark的documentation梯度增强树中,GBTClassifier对象的输入/参数定义为-

  

class pyspark.ml.classification.GBTClassifier(featuresCol ='features',   labelCol ='标签',projectionCol ='预测',maxDepth = 5,   maxBins = 32,minInstancesPerNode = 1,minInfoGain = 0.0,   maxMemoryInMB = 256,cacheNodeIds = False,checkpointInterval = 10,   lossType ='logistic',maxIter = 20,stepSize = 0.1,seed = None,   subsamplingRate = 1.0)

在创建模型时,参数中没有rawPredictionColprobabilityCol。而且它也没有getRawPredictionColgetProbabilityCol方法。这些方法和参数适用于随机森林,决策树和逻辑分类器

现在,当我拟合模型并应用变换时,我会得到另外两个列,分别为rawPredictionprobability

以下是我直接从spark文档中使用的example

from numpy import allclose
from pyspark.ml.linalg import Vectors
from pyspark.ml.feature import StringIndexer
df = spark.createDataFrame([
    (1.0, Vectors.dense(1.0)),
    (0.0, Vectors.sparse(1, [], []))], ["label", "features"])
stringIndexer = StringIndexer(inputCol="label", outputCol="indexed")
si_model = stringIndexer.fit(df)
td = si_model.transform(df)
gbt = GBTClassifier(maxIter=5, maxDepth=2, labelCol="indexed", seed=42)
model = gbt.fit(td)
model.featureImportances
allclose(model.treeWeights, [1.0, 0.1, 0.1, 0.1, 0.1])

test0 = spark.createDataFrame([(Vectors.dense(-1.0),)], ["features"])
model.transform(test0).show()

该示例的最后一行的输出是-

# +--------+--------------------+--------------------+----------+
# |features|       rawPrediction|         probability|prediction|
# +--------+--------------------+--------------------+----------+
# |  [-1.0]|[1.16967390812510...|[0.91208380260474...|       0.0|
# +--------+--------------------+--------------------+----------+

我对为什么这些列出现在我的输出中感到困惑。当然没有输入参数,因为我在调用类时尝试传递rawPredictionCol = rawPredictions并抛出错误。

这是一个错误吗?还是应该输出这些列?如果这些列是要在输出中显示的,那么在实例化类时如何设置它们的名称,以及为什么它们没有各自的get方法,例如getFeaturesCol

0 个答案:

没有答案