0

我正在熟悉PysparkSparkML目前。为此,我使用 Titanic 数据集来训练 GLM 以预测该数据集中的“票价”。

我正在密切关注 Spark 文档。我确实得到了一个工作模型(我称之为glm_fare),但是当我尝试使用评估训练模型时,summary我收到以下错误消息:

RuntimeError:没有可用于此 GeneralizedLinearRegressionModel 的训练摘要

为什么是这样?

训练的代码是这样的:

glm_fare = GeneralizedLinearRegression(
            labelCol="Fare", 
            featuresCol="features", 
            predictionCol='prediction',
            family='gamma',
            link='log',
            weightCol='wght',
            maxIter=20
            )
    glm_fit = glm_fare.fit(training_df)

    glm_fit.summary
4

2 回答 2

3

万一有人遇到这个问题,我也遇到了这个问题,似乎当 Hessian 矩阵不可逆时会发生此错误。该矩阵用于最大化估计系数的可能性。

如果特征值之一为 0,则矩阵不可逆,这发生在变量中存在多重共线性时。这意味着可以使用其他变量的线性组合来预测其中一个变量。因此,无法确定每个变量的影响具有任何意义。

一种可能的解决方案是找到(多)共线性的变量,并从回归中删除其中一个。但是请注意,多重共线性仅在您想解释系数时才是一个问题,而不是在模型用于预测时。

于 2020-05-04T07:38:31.167 回答
0

据记载, GeneralizedLinearRegressionModel文档中可能没有summary可用的模型。

但是,您可以进行初步检查以避免错误:

glm_fit.hasSummary()这是一种公共布尔方法。使用它作为

if glm_fit.hasSummary():
    print(glm_fit.summary)

这是对Pyspark 源代码GeneralizedLinearRegressionTrainingSummary 类源代码的直接喜欢以及引发错误的位置

于 2019-09-24T07:55:20.797 回答