-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathrandom_projection.ml
More file actions
161 lines (119 loc) · 3.32 KB
/
random_projection.ml
File metadata and controls
161 lines (119 loc) · 3.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
(* GaussianRandomProjection *)
(*
>>> import numpy as np
>>> from sklearn.random_projection import GaussianRandomProjection
>>> rng = np.random.RandomState(42)
>>> X = rng.rand(100, 10000)
>>> transformer = GaussianRandomProjection(random_state=rng)
>>> X_new = transformer.fit_transform(X)
>>> X_new.shape
(100, 3947)
*)
(* TEST TODO
let%expect_test "GaussianRandomProjection" =
let open Sklearn.Random_projection in
let rng = np..randomState ~42 random in
let x = .rand ~100 10000 rng in
let transformer = GaussianRandomProjection.create ~random_state:rng () in
let X_new = GaussianRandomProjection.fit_transform ~x transformer in
print_ndarray @@ X_new.shape;
[%expect {|
(100, 3947)
|}]
*)
(* SparseRandomProjection *)
(*
>>> import numpy as np
>>> from sklearn.random_projection import SparseRandomProjection
>>> rng = np.random.RandomState(42)
>>> X = rng.rand(100, 10000)
>>> transformer = SparseRandomProjection(random_state=rng)
>>> X_new = transformer.fit_transform(X)
>>> X_new.shape
(100, 3947)
>>> # very few components are non-zero
>>> np.mean(transformer.components_ != 0)
0.0100...
*)
(* TEST TODO
let%expect_test "SparseRandomProjection" =
let open Sklearn.Random_projection in
let rng = np..randomState ~42 random in
let x = .rand ~100 10000 rng in
let transformer = SparseRandomProjection.create ~random_state:rng () in
let X_new = SparseRandomProjection.fit_transform ~x transformer in
print_ndarray @@ X_new.shape;
[%expect {|
(100, 3947)
|}]
print_ndarray @@ # very few components are non-zero;
print_ndarray @@ .mean transformer.components_ != 0 np;
[%expect {|
0.0100...
|}]
*)
(* deprecated *)
(*
>>> from sklearn.utils import deprecated
>>> deprecated()
<sklearn.utils.deprecation.deprecated object at ...>
*)
(* TEST TODO
let%expect_test "deprecated" =
let open Sklearn.Random_projection in
print_ndarray @@ deprecated ();
[%expect {|
<sklearn.utils.deprecation.deprecated object at ...>
|}]
*)
(* deprecated *)
(*
>>> @deprecated()
... def some_function(): pass
*)
(* TEST TODO
let%expect_test "deprecated" =
let open Sklearn.Random_projection in
print_ndarray @@ @deprecated ()def some_function (): pass;
[%expect {|
|}]
*)
(* johnson_lindenstrauss_min_dim *)
(*
>>> johnson_lindenstrauss_min_dim(1e6, eps=0.5)
663
*)
(* TEST TODO
let%expect_test "johnson_lindenstrauss_min_dim" =
let open Sklearn.Random_projection in
print_ndarray @@ johnson_lindenstrauss_min_dim 1e6 ~eps:0.5 ();
[%expect {|
663
|}]
*)
(* johnson_lindenstrauss_min_dim *)
(*
>>> johnson_lindenstrauss_min_dim(1e6, eps=[0.5, 0.1, 0.01])
array([ 663, 11841, 1112658])
*)
(* TEST TODO
let%expect_test "johnson_lindenstrauss_min_dim" =
let open Sklearn.Random_projection in
print_ndarray @@ johnson_lindenstrauss_min_dim 1e6 ~eps:[0.5 0.1 0.01] ();
[%expect {|
array([ 663, 11841, 1112658])
|}]
*)
(* johnson_lindenstrauss_min_dim *)
(*
>>> johnson_lindenstrauss_min_dim([1e4, 1e5, 1e6], eps=0.1)
array([ 7894, 9868, 11841])
*)
(* TEST TODO
let%expect_test "johnson_lindenstrauss_min_dim" =
let open Sklearn.Random_projection in
print_ndarray @@ johnson_lindenstrauss_min_dim [1e4 ~1e5 1e6] ~eps:0.1 ();
[%expect {|
array([ 7894, 9868, 11841])
|}]
*)