pyspark - Pyspark / SparkML 中没有 GLM 的模型摘要
问题描述
我正在熟悉Pyspark
和SparkML
目前。为此,我使用 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
解决方案
万一有人遇到这个问题,我也遇到了这个问题,似乎当 Hessian 矩阵不可逆时会发生此错误。该矩阵用于最大化估计系数的可能性。
如果特征值之一为 0,则矩阵不可逆,这发生在变量中存在多重共线性时。这意味着可以使用其他变量的线性组合来预测其中一个变量。因此,无法确定每个变量的影响具有任何意义。
一种可能的解决方案是找到(多)共线性的变量,并从回归中删除其中一个。但是请注意,多重共线性仅在您想解释系数时才是一个问题,而不是在模型用于预测时。
推荐阅读
- java - 尝试为 mapsforge/vtm 创建 Xamarin Android 绑定 Java 库时出错
- entity-framework - 升级到 Entity Framework Core 3 时出错:当前上下文中不存在 RelationalReferenceCollectionBuilderExtensions
- python - 在 codejam 2019 中提交代码时出现运行时错误
- php - 有没有办法用 php 清理 Ubuntu Server 内存使用?
- angular - 如何以通过@Input() 提供的角度输出组件?
- angular - 我应该在 Angular 9 中使用什么来代替 @HostBinding("@grow") ?
- angular - Ionic / Angular 离子项,带有按钮单击以选择隐藏选定的离子项
- javascript - 如果不存在,Node.js Fs 创建文件
- excel - 打开特定文件夹中的每个文件
- octave - 将单元格数组从文本文件加载到 Octave