首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多类分类的RandomForestClassifier SPACK2.x

多类分类的RandomForestClassifier SPACK2.x
EN

Stack Overflow用户
提问于 2018-02-12 15:39:36
回答 2查看 588关注 0票数 1

我试图使用随机森林进行多类分类,使用spark 2.1.1

在像往常一样定义我的管道之后,它在索引阶段失败了。

我有一个包含多个字符串类型列的dataframe。我为他们每个人创建了一个StringIndexer。

我是通过将StringIndexers与VectorAssembler链接起来来创建管道的,最后是用标签转换器连接RandomForestClassifier。

我已经用distinct().count()检查了我的所有列,以确保我没有太多的类别,等等。

经过一些调试后,我了解到每当我开始对某些列建立索引时,我就会得到以下错误.打电话时:

代码语言:javascript
复制
  val indexer = udf { label: String =>
  if (labelToIndex.contains(label)) {
    labelToIndex(label)
  } else {
    throw new SparkException(s"Unseen label: $label.")
  }
}

Error evaluating methog: 'labelToIndex'
Error evaluating methog: 'labels'

然后,在转换中,定义元数据时会出现以下错误:

错误评估方法: org$apache$spark$ml$feature$StringIndexerModel$$labelToIndex方法抛出“java.lang.NullPointerException”异常。无法评估org.apache.spark.sql.types.Metadata.toString()

之所以会发生这种情况,是因为在我正在索引的某些列上有null。

我可以用下面的例子再现错误。

代码语言:javascript
复制
val df = spark.createDataFrame(
  Seq(("asd2s","1e1e",1.1,0), ("asd2s","1e1e",0.1,0), 
      (null,"1e3e",1.2,0), ("bd34t","1e1e",5.1,1), 
      ("asd2s","1e3e",0.2,0), ("bd34t","1e2e",4.3,1))
).toDF("x0","x1","x2","x3")

val indexer = new 
StringIndexer().setInputCol("x0").setOutputCol("x0idx")

indexer.fit(df).transform(df).show

// java.lang.NullPointerException

https://issues.apache.org/jira/browse/SPARK-11569

https://github.com/apache/spark/blob/branch-2.1/mllib/src/main/scala/org/apache/spark/ml/feature/StringIndexer.scala

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-14 23:43:14

目前的解决方案这里可以使用,在火花2.2.0上,问题是固定的上游。

票数 0
EN

Stack Overflow用户

发布于 2018-02-15 21:45:29

您可以使用DataFrame.na.fill(Map("colName1",val1),("colName2",val2),..))

其中:

DataFrame - DataFrame对象;"colName“-列的名称& val -值,用于替换列"colName”中的空值。

在填充所有空值之后,使用功能转换。

您可以在as的所有列中检查空数:

(列<- DataFrame.columns ){DataFrame.filter(DataFrame(列) === null \+)DataFrame(列)DataFrame(列)(列).count()

}

DataFrame.count()将给出DataFrame中的行总数。然后可以用DataFrame.describe()判断空数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48750108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档