我正在尝试在Pyspark中进行RandomForest回归。因为大多数变量都是具有许多因子级别的分类,所以我必须对它们进行字符串索引,单热编码并使用Vectorassembler创建一列特征向量。 Vectorassembler的输出是创造一个'功能'训练数据框中的列。在完成上述所有转换后,我们只需将此数据帧称为train_OHE
。
我的代码工作正常,直到那里。
现在当我运行randomforest回归量时,似乎有一个奇怪的错误。 scala.MatchError: [null,(1598,[0,2,234,274,295,1596],[1.0,1.0,1.0,1.0,1.0,1.0])] (of class org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema)
当我运行train_OHE.show()
时,'功能中的所有前20个元素都会出现。列,看起来像[1598,[0,2,234,274,295,1596],[1.0,1.0,1.0,1.0,1.0,1.0]]
- 由于稀疏的矢量表示,这是可以接受的。
我认为这是因为其中一行中的某个额外null
元素。
所以,
我的问题是如何找出数据框中的哪一行导致此问题。如果它是一个标题字符串,我会使用train_OHE['features'].like('%null%')
。在这种稀疏矢量元素的情况下,如何找出这个故障行?我试过了train_OHE['features'].split(',').like('%null%')
,但错误就出现了。