isotree 0.2.2 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -1
- data/LICENSE.txt +2 -2
- data/README.md +32 -14
- data/ext/isotree/ext.cpp +144 -31
- data/ext/isotree/extconf.rb +7 -7
- data/lib/isotree/isolation_forest.rb +110 -30
- data/lib/isotree/version.rb +1 -1
- data/vendor/isotree/LICENSE +1 -1
- data/vendor/isotree/README.md +165 -27
- data/vendor/isotree/include/isotree.hpp +2116 -0
- data/vendor/isotree/include/isotree_oop.hpp +394 -0
- data/vendor/isotree/inst/COPYRIGHTS +132 -0
- data/vendor/isotree/src/RcppExports.cpp +594 -57
- data/vendor/isotree/src/Rwrapper.cpp +2452 -304
- data/vendor/isotree/src/c_interface.cpp +958 -0
- data/vendor/isotree/src/crit.hpp +4236 -0
- data/vendor/isotree/src/digamma.hpp +184 -0
- data/vendor/isotree/src/dist.hpp +1886 -0
- data/vendor/isotree/src/exp_depth_table.hpp +134 -0
- data/vendor/isotree/src/extended.hpp +1444 -0
- data/vendor/isotree/src/external_facing_generic.hpp +399 -0
- data/vendor/isotree/src/fit_model.hpp +2401 -0
- data/vendor/isotree/src/{dealloc.cpp → headers_joined.hpp} +38 -22
- data/vendor/isotree/src/helpers_iforest.hpp +814 -0
- data/vendor/isotree/src/{impute.cpp → impute.hpp} +382 -123
- data/vendor/isotree/src/indexer.cpp +515 -0
- data/vendor/isotree/src/instantiate_template_headers.cpp +118 -0
- data/vendor/isotree/src/instantiate_template_headers.hpp +240 -0
- data/vendor/isotree/src/isoforest.hpp +1659 -0
- data/vendor/isotree/src/isotree.hpp +1815 -394
- data/vendor/isotree/src/isotree_exportable.hpp +99 -0
- data/vendor/isotree/src/merge_models.cpp +159 -16
- data/vendor/isotree/src/mult.hpp +1321 -0
- data/vendor/isotree/src/oop_interface.cpp +844 -0
- data/vendor/isotree/src/oop_interface.hpp +278 -0
- data/vendor/isotree/src/other_helpers.hpp +219 -0
- data/vendor/isotree/src/predict.hpp +1932 -0
- data/vendor/isotree/src/python_helpers.hpp +114 -0
- data/vendor/isotree/src/ref_indexer.hpp +154 -0
- data/vendor/isotree/src/robinmap/LICENSE +21 -0
- data/vendor/isotree/src/robinmap/README.md +483 -0
- data/vendor/isotree/src/robinmap/include/tsl/robin_growth_policy.h +406 -0
- data/vendor/isotree/src/robinmap/include/tsl/robin_hash.h +1639 -0
- data/vendor/isotree/src/robinmap/include/tsl/robin_map.h +807 -0
- data/vendor/isotree/src/robinmap/include/tsl/robin_set.h +660 -0
- data/vendor/isotree/src/serialize.cpp +4316 -139
- data/vendor/isotree/src/sql.cpp +143 -61
- data/vendor/isotree/src/subset_models.cpp +174 -0
- data/vendor/isotree/src/utils.hpp +3786 -0
- data/vendor/isotree/src/xoshiro.hpp +463 -0
- data/vendor/isotree/src/ziggurat.hpp +405 -0
- metadata +40 -105
- data/vendor/cereal/LICENSE +0 -24
- data/vendor/cereal/README.md +0 -85
- data/vendor/cereal/include/cereal/access.hpp +0 -351
- data/vendor/cereal/include/cereal/archives/adapters.hpp +0 -163
- data/vendor/cereal/include/cereal/archives/binary.hpp +0 -169
- data/vendor/cereal/include/cereal/archives/json.hpp +0 -1019
- data/vendor/cereal/include/cereal/archives/portable_binary.hpp +0 -334
- data/vendor/cereal/include/cereal/archives/xml.hpp +0 -956
- data/vendor/cereal/include/cereal/cereal.hpp +0 -1089
- data/vendor/cereal/include/cereal/details/helpers.hpp +0 -422
- data/vendor/cereal/include/cereal/details/polymorphic_impl.hpp +0 -796
- data/vendor/cereal/include/cereal/details/polymorphic_impl_fwd.hpp +0 -65
- data/vendor/cereal/include/cereal/details/static_object.hpp +0 -127
- data/vendor/cereal/include/cereal/details/traits.hpp +0 -1411
- data/vendor/cereal/include/cereal/details/util.hpp +0 -84
- data/vendor/cereal/include/cereal/external/base64.hpp +0 -134
- data/vendor/cereal/include/cereal/external/rapidjson/allocators.h +0 -284
- data/vendor/cereal/include/cereal/external/rapidjson/cursorstreamwrapper.h +0 -78
- data/vendor/cereal/include/cereal/external/rapidjson/document.h +0 -2652
- data/vendor/cereal/include/cereal/external/rapidjson/encodedstream.h +0 -299
- data/vendor/cereal/include/cereal/external/rapidjson/encodings.h +0 -716
- data/vendor/cereal/include/cereal/external/rapidjson/error/en.h +0 -74
- data/vendor/cereal/include/cereal/external/rapidjson/error/error.h +0 -161
- data/vendor/cereal/include/cereal/external/rapidjson/filereadstream.h +0 -99
- data/vendor/cereal/include/cereal/external/rapidjson/filewritestream.h +0 -104
- data/vendor/cereal/include/cereal/external/rapidjson/fwd.h +0 -151
- data/vendor/cereal/include/cereal/external/rapidjson/internal/biginteger.h +0 -290
- data/vendor/cereal/include/cereal/external/rapidjson/internal/diyfp.h +0 -271
- data/vendor/cereal/include/cereal/external/rapidjson/internal/dtoa.h +0 -245
- data/vendor/cereal/include/cereal/external/rapidjson/internal/ieee754.h +0 -78
- data/vendor/cereal/include/cereal/external/rapidjson/internal/itoa.h +0 -308
- data/vendor/cereal/include/cereal/external/rapidjson/internal/meta.h +0 -186
- data/vendor/cereal/include/cereal/external/rapidjson/internal/pow10.h +0 -55
- data/vendor/cereal/include/cereal/external/rapidjson/internal/regex.h +0 -740
- data/vendor/cereal/include/cereal/external/rapidjson/internal/stack.h +0 -232
- data/vendor/cereal/include/cereal/external/rapidjson/internal/strfunc.h +0 -69
- data/vendor/cereal/include/cereal/external/rapidjson/internal/strtod.h +0 -290
- data/vendor/cereal/include/cereal/external/rapidjson/internal/swap.h +0 -46
- data/vendor/cereal/include/cereal/external/rapidjson/istreamwrapper.h +0 -128
- data/vendor/cereal/include/cereal/external/rapidjson/memorybuffer.h +0 -70
- data/vendor/cereal/include/cereal/external/rapidjson/memorystream.h +0 -71
- data/vendor/cereal/include/cereal/external/rapidjson/msinttypes/inttypes.h +0 -316
- data/vendor/cereal/include/cereal/external/rapidjson/msinttypes/stdint.h +0 -300
- data/vendor/cereal/include/cereal/external/rapidjson/ostreamwrapper.h +0 -81
- data/vendor/cereal/include/cereal/external/rapidjson/pointer.h +0 -1414
- data/vendor/cereal/include/cereal/external/rapidjson/prettywriter.h +0 -277
- data/vendor/cereal/include/cereal/external/rapidjson/rapidjson.h +0 -656
- data/vendor/cereal/include/cereal/external/rapidjson/reader.h +0 -2230
- data/vendor/cereal/include/cereal/external/rapidjson/schema.h +0 -2497
- data/vendor/cereal/include/cereal/external/rapidjson/stream.h +0 -223
- data/vendor/cereal/include/cereal/external/rapidjson/stringbuffer.h +0 -121
- data/vendor/cereal/include/cereal/external/rapidjson/writer.h +0 -709
- data/vendor/cereal/include/cereal/external/rapidxml/license.txt +0 -52
- data/vendor/cereal/include/cereal/external/rapidxml/manual.html +0 -406
- data/vendor/cereal/include/cereal/external/rapidxml/rapidxml.hpp +0 -2624
- data/vendor/cereal/include/cereal/external/rapidxml/rapidxml_iterators.hpp +0 -175
- data/vendor/cereal/include/cereal/external/rapidxml/rapidxml_print.hpp +0 -428
- data/vendor/cereal/include/cereal/external/rapidxml/rapidxml_utils.hpp +0 -123
- data/vendor/cereal/include/cereal/macros.hpp +0 -154
- data/vendor/cereal/include/cereal/specialize.hpp +0 -139
- data/vendor/cereal/include/cereal/types/array.hpp +0 -79
- data/vendor/cereal/include/cereal/types/atomic.hpp +0 -55
- data/vendor/cereal/include/cereal/types/base_class.hpp +0 -203
- data/vendor/cereal/include/cereal/types/bitset.hpp +0 -176
- data/vendor/cereal/include/cereal/types/boost_variant.hpp +0 -164
- data/vendor/cereal/include/cereal/types/chrono.hpp +0 -72
- data/vendor/cereal/include/cereal/types/common.hpp +0 -129
- data/vendor/cereal/include/cereal/types/complex.hpp +0 -56
- data/vendor/cereal/include/cereal/types/concepts/pair_associative_container.hpp +0 -73
- data/vendor/cereal/include/cereal/types/deque.hpp +0 -62
- data/vendor/cereal/include/cereal/types/forward_list.hpp +0 -68
- data/vendor/cereal/include/cereal/types/functional.hpp +0 -43
- data/vendor/cereal/include/cereal/types/list.hpp +0 -62
- data/vendor/cereal/include/cereal/types/map.hpp +0 -36
- data/vendor/cereal/include/cereal/types/memory.hpp +0 -425
- data/vendor/cereal/include/cereal/types/optional.hpp +0 -66
- data/vendor/cereal/include/cereal/types/polymorphic.hpp +0 -483
- data/vendor/cereal/include/cereal/types/queue.hpp +0 -132
- data/vendor/cereal/include/cereal/types/set.hpp +0 -103
- data/vendor/cereal/include/cereal/types/stack.hpp +0 -76
- data/vendor/cereal/include/cereal/types/string.hpp +0 -61
- data/vendor/cereal/include/cereal/types/tuple.hpp +0 -123
- data/vendor/cereal/include/cereal/types/unordered_map.hpp +0 -36
- data/vendor/cereal/include/cereal/types/unordered_set.hpp +0 -99
- data/vendor/cereal/include/cereal/types/utility.hpp +0 -47
- data/vendor/cereal/include/cereal/types/valarray.hpp +0 -89
- data/vendor/cereal/include/cereal/types/variant.hpp +0 -109
- data/vendor/cereal/include/cereal/types/vector.hpp +0 -112
- data/vendor/cereal/include/cereal/version.hpp +0 -52
- data/vendor/isotree/src/Makevars +0 -4
- data/vendor/isotree/src/crit.cpp +0 -912
- data/vendor/isotree/src/dist.cpp +0 -749
- data/vendor/isotree/src/extended.cpp +0 -790
- data/vendor/isotree/src/fit_model.cpp +0 -1090
- data/vendor/isotree/src/helpers_iforest.cpp +0 -324
- data/vendor/isotree/src/isoforest.cpp +0 -771
- data/vendor/isotree/src/mult.cpp +0 -607
- data/vendor/isotree/src/predict.cpp +0 -853
- data/vendor/isotree/src/utils.cpp +0 -1566
@@ -0,0 +1,184 @@
|
|
1
|
+
/* Copyright (c) 2001-2002 Enthought, Inc. 2003-2023, SciPy Developers.
|
2
|
+
All rights reserved.
|
3
|
+
|
4
|
+
Redistribution and use in source and binary forms, with or without
|
5
|
+
modification, are permitted provided that the following conditions
|
6
|
+
are met:
|
7
|
+
|
8
|
+
1. Redistributions of source code must retain the above copyright
|
9
|
+
notice, this list of conditions and the following disclaimer.
|
10
|
+
|
11
|
+
2. Redistributions in binary form must reproduce the above
|
12
|
+
copyright notice, this list of conditions and the following
|
13
|
+
disclaimer in the documentation and/or other materials provided
|
14
|
+
with the distribution.
|
15
|
+
|
16
|
+
3. Neither the name of the copyright holder nor the names of its
|
17
|
+
contributors may be used to endorse or promote products derived
|
18
|
+
from this software without specific prior written permission.
|
19
|
+
|
20
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
21
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
22
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
23
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
24
|
+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
25
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
26
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
27
|
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
28
|
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
29
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
30
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
31
|
+
|
32
|
+
Distributed under 3-clause BSD license with permission from the author,
|
33
|
+
see https://lists.debian.org/debian-legal/2004/12/msg00295.html
|
34
|
+
|
35
|
+
------------------------------------------------------------------
|
36
|
+
|
37
|
+
Cephes Math Library Release 2.8: June, 2000
|
38
|
+
Copyright 1984, 1995, 2000 by Stephen L. Moshier
|
39
|
+
|
40
|
+
This software is derived from the Cephes Math Library and is
|
41
|
+
incorporated herein by permission of the author.
|
42
|
+
|
43
|
+
All rights reserved.
|
44
|
+
|
45
|
+
Redistribution and use in source and binary forms, with or without
|
46
|
+
modification, are permitted provided that the following conditions are met:
|
47
|
+
* Redistributions of source code must retain the above copyright
|
48
|
+
notice, this list of conditions and the following disclaimer.
|
49
|
+
* Redistributions in binary form must reproduce the above copyright
|
50
|
+
notice, this list of conditions and the following disclaimer in the
|
51
|
+
documentation and/or other materials provided with the distribution.
|
52
|
+
* Neither the name of the <organization> nor the
|
53
|
+
names of its contributors may be used to endorse or promote products
|
54
|
+
derived from this software without specific prior written permission.
|
55
|
+
|
56
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
57
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
58
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
59
|
+
DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
60
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
61
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
62
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
63
|
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
64
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
65
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
|
66
|
+
|
67
|
+
static inline void poly6_twice_return_p7
|
68
|
+
(
|
69
|
+
const double x,
|
70
|
+
const double *restrict coefs1,
|
71
|
+
const double *restrict coefs2,
|
72
|
+
double &restrict res1,
|
73
|
+
double &restrict res2,
|
74
|
+
double &restrict w7
|
75
|
+
)
|
76
|
+
{
|
77
|
+
double w[6];
|
78
|
+
w[0] = 1.;
|
79
|
+
w[1] = x;
|
80
|
+
w[2] = x*x;
|
81
|
+
w[3] = x*w[2];
|
82
|
+
w[4] = w[2]*w[2];
|
83
|
+
w[5] = w[2]*w[3];
|
84
|
+
w7 = w[3]*w[3];
|
85
|
+
res1 = 0.;
|
86
|
+
res2 = 0.;
|
87
|
+
for (int ix = 0; ix < 6; ix++)
|
88
|
+
{
|
89
|
+
res1 = std::fma(coefs1[ix], w[ix], res1);
|
90
|
+
res2 = std::fma(coefs2[ix], w[ix], res2);
|
91
|
+
}
|
92
|
+
}
|
93
|
+
|
94
|
+
static inline double poly7(const double x, const double *restrict coefs)
|
95
|
+
{
|
96
|
+
double w[7];
|
97
|
+
w[0] = 1.;
|
98
|
+
w[1] = x;
|
99
|
+
w[2] = x*x;
|
100
|
+
w[3] = x*w[2];
|
101
|
+
w[4] = w[2]*w[2];
|
102
|
+
w[5] = w[2]*w[3];
|
103
|
+
w[6] = w[3]*w[3];
|
104
|
+
|
105
|
+
double out = 0.;
|
106
|
+
for (int ix = 0; ix < 7; ix++)
|
107
|
+
out = std::fma(w[ix], coefs[ix], out);
|
108
|
+
return out;
|
109
|
+
}
|
110
|
+
|
111
|
+
static const double coefs_12_m[6] = {
|
112
|
+
0.25479851061131551,
|
113
|
+
-0.32555031186804491,
|
114
|
+
-0.65031853770896507,
|
115
|
+
-0.28919126444774784,
|
116
|
+
-0.045251321448739056,
|
117
|
+
-0.0020713321167745952
|
118
|
+
};
|
119
|
+
|
120
|
+
static const double coefs_12_d[6] = {
|
121
|
+
1.0,
|
122
|
+
2.0767117023730469,
|
123
|
+
1.4606242909763515,
|
124
|
+
0.43593529692665969,
|
125
|
+
0.054151797245674225,
|
126
|
+
0.0021284987017821144
|
127
|
+
};
|
128
|
+
|
129
|
+
static double coefs_asy[] = {
|
130
|
+
8.33333333333333333333E-2,
|
131
|
+
-8.33333333333333333333E-3,
|
132
|
+
3.96825396825396825397E-3,
|
133
|
+
-4.16666666666666666667E-3,
|
134
|
+
7.57575757575757575758E-3,
|
135
|
+
-2.10927960927960927961E-2,
|
136
|
+
8.33333333333333333333E-2
|
137
|
+
};
|
138
|
+
|
139
|
+
/* This is implemented only for positive non-integer inputs */
|
140
|
+
double digamma(double x)
|
141
|
+
{
|
142
|
+
/* check for positive integer up to 64 */
|
143
|
+
if (unlikely((x <= 64) && (x == std::floor(x)))) {
|
144
|
+
return harmonic_recursive(1.0, (double)x) - EULERS_GAMMA;
|
145
|
+
}
|
146
|
+
|
147
|
+
double y = 0.;
|
148
|
+
|
149
|
+
/* use the recurrence relation to move x into [1, 2] */
|
150
|
+
if (x < 1.) {
|
151
|
+
y -= 1. / x;
|
152
|
+
x += 1.;
|
153
|
+
}
|
154
|
+
else if (x < 10.) {
|
155
|
+
while (x > 2.) {
|
156
|
+
x -= 1.;
|
157
|
+
y += 1. / x;
|
158
|
+
}
|
159
|
+
}
|
160
|
+
|
161
|
+
if (x < 1. || x > 2.) {
|
162
|
+
double z = 1. / (x*x);
|
163
|
+
return y + std::log(x) - 0.5/x - z*poly7(z, coefs_asy);
|
164
|
+
}
|
165
|
+
|
166
|
+
const double r1 = 1.46163214463740587234;
|
167
|
+
const double r2 = 0.00000000033095646883;
|
168
|
+
const double r3 = 0.9016312093258695918615325266959189453125e-19;
|
169
|
+
const double Y = 0.99558162689208984;
|
170
|
+
double m, d, p7;
|
171
|
+
poly6_twice_return_p7(
|
172
|
+
x - 1.,
|
173
|
+
coefs_12_m,
|
174
|
+
coefs_12_d,
|
175
|
+
m,
|
176
|
+
d,
|
177
|
+
p7
|
178
|
+
);
|
179
|
+
double r = m / std::fma(p7, -0.55789841321675513e-6, d);
|
180
|
+
double g = x - r1;
|
181
|
+
g -= r2;
|
182
|
+
g -= r3;
|
183
|
+
return y + g*Y + g*r;
|
184
|
+
}
|