| @@ 94-109 (lines=16) @@ | ||
| 91 | /** |
|
| 92 | * @param array $sample |
|
| 93 | */ |
|
| 94 | private function normalizeL1(array &$sample) |
|
| 95 | { |
|
| 96 | $norm1 = 0; |
|
| 97 | foreach ($sample as $feature) { |
|
| 98 | $norm1 += abs($feature); |
|
| 99 | } |
|
| 100 | ||
| 101 | if (0 == $norm1) { |
|
| 102 | $count = count($sample); |
|
| 103 | $sample = array_fill(0, $count, 1.0 / $count); |
|
| 104 | } else { |
|
| 105 | foreach ($sample as &$feature) { |
|
| 106 | $feature /= $norm1; |
|
| 107 | } |
|
| 108 | } |
|
| 109 | } |
|
| 110 | ||
| 111 | /** |
|
| 112 | * @param array $sample |
|
| @@ 114-129 (lines=16) @@ | ||
| 111 | /** |
|
| 112 | * @param array $sample |
|
| 113 | */ |
|
| 114 | private function normalizeL2(array &$sample) |
|
| 115 | { |
|
| 116 | $norm2 = 0; |
|
| 117 | foreach ($sample as $feature) { |
|
| 118 | $norm2 += $feature * $feature; |
|
| 119 | } |
|
| 120 | $norm2 = sqrt((float)$norm2); |
|
| 121 | ||
| 122 | if (0 == $norm2) { |
|
| 123 | $sample = array_fill(0, count($sample), 1); |
|
| 124 | } else { |
|
| 125 | foreach ($sample as &$feature) { |
|
| 126 | $feature /= $norm2; |
|
| 127 | } |
|
| 128 | } |
|
| 129 | } |
|
| 130 | ||
| 131 | /** |
|
| 132 | * @param array $sample |
|