spark mlllib?

问答 maxy ⋅ 于 2018-01-30 14:58:10 ⋅ 最后回复由 maxy 2018-01-30 17:06:01 ⋅ 4424 阅读

LogisticRegression lr = new LogisticRegression()
.setMaxIter(10)
.setRegParam(0.3)
.setElasticNetParam(0.8); //弹性参数,用于调节L1和L2之间的比例,两种正则化比例加起来是1,详见后面正则化的设置,默认为0,只使用L2正则化,设置为1就是只用L1正则化
//.setThreshold(0.8) threshold变量用来控制分类的阈值,默认值为0.5。表示如果预测值小于threshold则为分类0.0,否则为1.0。

LogisticRegressionModel lrModel = lr.fit(df);
LogisticRegressionTrainingSummary trainingSummary = lrModel.summary();
// Obtain the loss per iteration. 获取每次迭代的损失
double[] objectiveHistory = trainingSummary.objectiveHistory();
for (double lossPerIteration : objectiveHistory) {
System.out.println("loss-- "+lossPerIteration);
}
用上面的代码来做 train, 放30条数据是没有问题的。 数据量大的时候报错:
18/01/30 14:48:52 INFO OWLQN: Step Size: NaN
18/01/30 14:48:52 INFO OWLQN: Val and Grad Norm: NaN (rel: NaN) NaN
18/01/30 14:48:52 ERROR OWLQN: Failure! Resetting history: breeze.optimize.NaNHistory:
18/01/30 14:48:52 INFO OWLQN: Step Size: 1.000
18/01/30 14:48:52 INFO OWLQN: Val and Grad Norm: NaN (rel: NaN) NaN
18/01/30 14:48:52 ERROR OWLQN: Failure! Resetting history: breeze.optimize.NaNHistory:

损失函数日志 :
loss-- NaN
loss-- NaN
loss-- NaN
loss-- NaN

这是什么鬼? 该怎么解决!!

成为第一个点赞的人吧 :bowtie:
回复数量: 1
  • maxy
    2018-01-30 17:06:00

    这个方法我感觉有问题, 在 github上的; 最后的 F-Measure 的面积 = 1, 不可能等于1啊, 只能无限的接近1才是对的,不知道怎么验证

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter