mirror of
https://github.com/Llewellynvdm/php-ml.git
synced 2024-11-21 20:45:10 +00:00
Fix division by zero in ANOVA for small size dataset (#391)
This commit is contained in:
parent
4590d5cc32
commit
1a856c9099
@ -45,6 +45,10 @@ final class ANOVA
|
|||||||
return $s / $dfbn;
|
return $s / $dfbn;
|
||||||
}, $ssbn);
|
}, $ssbn);
|
||||||
$msw = array_map(function ($s) use ($dfwn) {
|
$msw = array_map(function ($s) use ($dfwn) {
|
||||||
|
if ($dfwn === 0) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
return $s / $dfwn;
|
return $s / $dfwn;
|
||||||
}, $sswn);
|
}, $sswn);
|
||||||
|
|
||||||
|
@ -61,6 +61,48 @@ final class SelectKBestTest extends TestCase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testSelectKBestIssue386(): void
|
||||||
|
{
|
||||||
|
$samples = [
|
||||||
|
[
|
||||||
|
0.0006729998475705993,
|
||||||
|
0.0,
|
||||||
|
0.999999773507577,
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
6.66666515671718E-7,
|
||||||
|
3.33333257835859E-6,
|
||||||
|
6.66666515671718E-6,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.0006729998475849566,
|
||||||
|
0.0,
|
||||||
|
0.9999997735289103,
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
6.666665156859402E-7,
|
||||||
|
3.3333325784297012E-6,
|
||||||
|
1.3333330313718804E-6,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
$targets = [15.5844, 4.45284];
|
||||||
|
|
||||||
|
$selector = new SelectKBest(2);
|
||||||
|
$selector->fit($samples, $targets);
|
||||||
|
|
||||||
|
self::assertEquals([
|
||||||
|
-2.117582368135751E-22,
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
1.0097419586828951E-28,
|
||||||
|
0.0,
|
||||||
|
1.4222215779620095E-11,
|
||||||
|
], $selector->scores());
|
||||||
|
}
|
||||||
|
|
||||||
public function testThrowExceptionOnEmptyTargets(): void
|
public function testThrowExceptionOnEmptyTargets(): void
|
||||||
{
|
{
|
||||||
$this->expectException(InvalidArgumentException::class);
|
$this->expectException(InvalidArgumentException::class);
|
||||||
|
Loading…
Reference in New Issue
Block a user