目前,我有一个公共-数学2.1的依赖,但我想升级到共用-数学3.6。不幸的是,有些测试案例不再起作用了。我知道是什么导致了我的问题,但我不知道如何相应地更改测试用例,以测试正确的行为。
我有以下测试代码:
@Test
public void testIdentityMatrix() {
double[][] x = { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 0, 1 }, { 0, 0, 0, 1 } };
double[] y = { 1, 2, 3, 4 };
OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression();
regression.setNoIntercept(true);
regression.newSampleData(y, x);
double[] b = regression.estimateRegressionParameters();
for (int i = 0; i < y.length; i++)
{
assertEquals(b[i], y[i], 0.001);
}
}升级到公用-数学3.6之后,OLSMultipleLinearRegression将检查给定的矩阵x和向量y以获得有效的内容。此验证在消息中失败:
没有足够的数据(4行)用于这许多预测器(4个预测器)
为了纠正测试用例,我需要更改什么?
发布于 2016-11-12 22:12:52
发布于 2016-08-21 06:13:43
样本数必须大于变量数。显然你的测试用例不正确。你必须至少再添加一个样本。如果你改变了
double[][] x = { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 0, 1 }, { 0, 0, 0, 1 } };至
double[][] x = { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 0, 1 }, { 0, 0, 0, 1 }, {1,0,0,0} };应该管用的。(虽然我没有测试)。
发布于 2017-04-28 02:14:15
我想第三行x应该是0010而不是0001?
但是,如果您将x更改为
double x={ 1,0,0,0 },{ 0,1,0,0 },{ 0,0,1,1 },{ 0,0,0,1 };
把你变成
double[] y={ 1,2,3,4,10 };
最后一个元素是其他元素的和,那么它就工作了。
https://stackoverflow.com/questions/37320008
复制相似问题