码迷,mamicode.com
首页 > Web开发 > 详细

mllib:Exception in thread "main" org.apache.spark.SparkException: Input validation failed.

时间:2015-04-09 23:52:01      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:机器学习   spark   数据挖掘   算法   

当我们使用mllib做分类,用到逻辑回归或线性支持向量机做分类时,可能会出现下面的错误:

15/04/09 21:27:25 ERROR DataValidators: Classification labels should be 0 or 1. Found 3000000 invalid labels
Exception in thread "main" org.apache.spark.SparkException: Input validation failed.

由于做调试时,debug输出的信息很多,我们常常忽略了上边的ERROR,而特别关注Input validation failed。


寻找源码,先关校验数据代码如下:

// Check the data properties before running the optimizer
    if (validateData && !validators.forall(func => func(input))) {
      throw new SparkException("Input validation failed.")
    }

源码仅此而已,并未能得到解决问题的办法。然后,后来才发现错误信息还有上边儿的error。


错误信息的意思是分类标签应该是0或者1,而不能是其他值。当时我的类别标签中包含了2,正好是3000000条信息;于是将类别标签替换成0或1,编译通过。


这也证明了为什么说线性支持向量机适合做二分类的数据。当然,修改算法它也可以支持三种类别,网上有大量相关实现。






mllib:Exception in thread "main" org.apache.spark.SparkException: Input validation failed.

标签:机器学习   spark   数据挖掘   算法   

原文地址:http://blog.csdn.net/u013361361/article/details/44966373

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!