gpt4 book ai didi

apache-commons-math - apache commons math - 当 bin 中仅存在 1 个值时出现 NotStrictlyPositiveException

转载 作者:行者123 更新时间:2023-12-03 04:49:33 24 4
gpt4 key购买 nike

我正在尝试使用 apache commons math 来估计一组值的内核密度。一个 bin 恰好只有一个值,当我尝试调用cumulativeProbability() 时,我得到一个 NotStrictlyPositiveException。有什么办法可以防止这种情况发生吗?我无法确定所有垃圾箱都至少有一个值。

谢谢。

最佳答案

鉴于此错误仍然存​​在,我编写了自己的 EmpiricalDistribution class 实现,遵循他们的指导方针。我只重新实现了我需要的功能,即计算分布的熵,但您可以轻松地将其扩展以满足您的需求。

public class EmpiricalDistribution {

private double[] values;
private int[] binCountArray;
private double maxValue, minValue;
private double mean, stDev;

public EmpiricalDistribution(double[] values) {
this.values = values;
int binCount = NumberUtil.roundToClosestInt(values.length / 10.0);
binCountArray = new int[binCount];

maxValue = Double.NEGATIVE_INFINITY;
minValue = Double.POSITIVE_INFINITY;
for (double value : values) {
if (value > maxValue) maxValue = value;
if (value < minValue) minValue = value;
}

double binRange = (maxValue - minValue) / binCount;
for (double value : values) {
int bin = (int) ((value - minValue) / binRange);
bin = Math.min(binCountArray.length - 1, bin);
binCountArray[bin]++;
}

mean = (new Mean()).evaluate(values);
stDev = (new StandardDeviation()).evaluate(values, mean);
}

public double getEntropy() {
double entropy = 0;
for (int valuesInBin : binCountArray) {
if (valuesInBin == 0) continue;

double binProbability = valuesInBin / (double) values.length;
entropy -= binProbability * FastMath.log(2, binProbability);
}

return entropy;
}

public double getMean() {
return mean;
}

public double getStandardDeviation() {
return stDev;
}

}

关于apache-commons-math - apache commons math - 当 bin 中仅存在 1 个值时出现 NotStrictlyPositiveException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18003311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com