【发布时间】:2017-07-01 11:21:00
【问题描述】:
我使用 逻辑回归 来训练我的数据。 在这个过程中,我需要计算一个 sigmoid 函数,编码如下:
private double sigmoid(double x) {
return 1.0 / (1 + Math.pow(Math.E, -1 * x));
}
所以如果我的x大于36,它总是返回1.0,我会在log(1 - sigmoid(x))中得到Infinity。
我猜java不是机器学习的好语言,我只需要在这个项目中申请。
通过这个question我也知道了Java的精度原理,但是我还是想知道有没有办法解决这个问题。
【问题讨论】:
-
考虑使用
BigDecimal以获得高精度值。这个问题也可能对你有帮助:stackoverflow.com/questions/13784056/… -
“我知道 java 不是一门好语言”——无知的陈述。
-
这是特定于浮点的(不是特定于语言的)。一个技巧是使用不同的比例,比如对数比例或类似的比例——如果可能的话。这里可能没有。
-
对不起,我的意思是java可能不擅长机器学习。
标签: java machine-learning double precision logistic-regression