spark 报错:java.lang.IllegalArgumentException: requirement failed: init value should = bound 解决

3 篇文章 0 订阅
1 篇文章 0 订阅

spark 逻辑回归报错:(标题不允许出现“<”符号,完整报错如下)
Exception in thread “main” java.lang.IllegalArgumentException: requirement failed: init value should <= bound

Exception in thread "main" java.lang.IllegalArgumentException: requirement failed: init value should <= bound
	at scala.Predef$.require(Predef.scala:219)
	at breeze.optimize.StrongWolfeLineSearch.minimizeWithBound(StrongWolfe.scala:73)
	at breeze.optimize.StrongWolfeLineSearch.minimize(StrongWolfe.scala:62)
	at breeze.optimize.LBFGS.determineStepSize(LBFGS.scala:76)
	at breeze.optimize.LBFGS.determineStepSize(LBFGS.scala:39)
	at breeze.optimize.FirstOrderMinimizer$$anonfun$infiniteIterations$1.apply(FirstOrderMinimizer.scala:64)
	at breeze.optimize.FirstOrderMinimizer$$anonfun$infiniteIterations$1.apply(FirstOrderMinimizer.scala:62)
	at scala.collection.Iterator$$anon$7.next(Iterator.scala:129)
	at breeze.util.IteratorImplicits$RichIterator$$anon$2.next(Implicits.scala:71)
	at org.apache.spark.ml.classification.LogisticRegression.train(LogisticRegression.scala:809)
	at org.apache.spark.mllib.classification.LogisticRegressionWithLBFGS.runWithMlLogisticRegression$1(LogisticRegression.scala:453)
	at org.apache.spark.mllib.classification.LogisticRegressionWithLBFGS.run(LogisticRegression.scala:459)
	at org.apache.spark.mllib.classification.LogisticRegressionWithLBFGS.run(LogisticRegression.scala:407)
过程:修改数据处理逻辑后突然报错

考虑是数据本身的问题,报错最终指向run()函数,对照加载已持久化的模型发现未出现该问题(即使用load()进行加载),可以确定是数据的问题。
数据打印出来,复制到文件中搜索找到NAN

原因:run()中给定的训练集数据有问题,比如说出现NAN等情况

这个问题导致模型无法通过训练构造,预测时不会报错。(可以通过加载已经持久化的模型得到)
说明了构造模型的过程对数据要求比较严格,而测试不严格

解决方法:出现NAN一般是由infinity转换而来,infinity在scala中为无穷大,可以由除以0产生,数据做好控制即可。
scala本身不够完善,基本由java衍生,依赖JVM,异常处理不够清晰。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值