当列包含向量时,如何在PySpark中匹配和替换

时间:2017-09-23 08:36:30

标签: python machine-learning pyspark

我正在尝试在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%'),但错误就出现了。

0 个答案:

没有答案