1
+ from warnings import catch_warnings
1
2
import numpy as np
2
3
from slise .optimisation import loss_smooth
3
4
from slise .data import add_intercept_column , scale_same
@@ -29,80 +30,82 @@ def test_initialise_old():
29
30
30
31
31
32
def test_initialise ():
32
- print ("Testing initialisation" )
33
- X , Y = data_create (20 , 5 )
34
- zero = np .zeros (5 )
35
- alpha , beta = initialise_candidates (X , Y , 0.1 )
36
- assert beta > 0
37
- assert loss_smooth (alpha , X , Y , 0.1 , beta = beta ) <= loss_smooth (
38
- zero , X , Y , 0.1 , beta = beta
39
- )
40
- X , Y = data_create (20 , 12 )
41
- zero = np .zeros (12 )
42
- alpha , beta = initialise_candidates (X , Y , 0.1 )
43
- assert beta > 0
44
- assert loss_smooth (alpha , X , Y , 0.1 , beta = beta ) <= loss_smooth (
45
- zero , X , Y , 0.1 , beta = beta
46
- )
47
- X , Y = data_create (20 , 11 )
48
- X = add_intercept_column (X )
49
- zero = np .zeros (12 )
50
- alpha , beta = initialise_candidates (X , Y , 0.1 )
51
- assert beta > 0
52
- assert loss_smooth (alpha , X , Y , 0.1 , beta = beta ) <= loss_smooth (
53
- zero , X , Y , 0.1 , beta = beta
54
- )
55
- X , Y = data_create (20 , 12 )
56
- x = np .random .normal (size = 12 )
57
- X = X - x [None , :]
58
- zero = np .zeros (12 )
59
- alpha , beta = initialise_candidates (X , Y , 0.1 )
60
- assert beta > 0
61
- assert loss_smooth (alpha , X , Y , 0.1 , beta = beta ) <= loss_smooth (
62
- zero , X , Y , 0.1 , beta = beta
63
- )
33
+ with catch_warnings (record = True ) as w :
34
+ print ("Testing initialisation" )
35
+ X , Y = data_create (20 , 5 )
36
+ zero = np .zeros (5 )
37
+ alpha , beta = initialise_candidates (X , Y , 0.1 )
38
+ assert beta > 0
39
+ assert loss_smooth (alpha , X , Y , 0.1 , beta = beta ) <= loss_smooth (
40
+ zero , X , Y , 0.1 , beta = beta
41
+ )
42
+ X , Y = data_create (20 , 12 )
43
+ zero = np .zeros (12 )
44
+ alpha , beta = initialise_candidates (X , Y , 0.1 )
45
+ assert beta > 0
46
+ assert loss_smooth (alpha , X , Y , 0.1 , beta = beta ) <= loss_smooth (
47
+ zero , X , Y , 0.1 , beta = beta
48
+ )
49
+ X , Y = data_create (20 , 11 )
50
+ X = add_intercept_column (X )
51
+ zero = np .zeros (12 )
52
+ alpha , beta = initialise_candidates (X , Y , 0.1 )
53
+ assert beta > 0
54
+ assert loss_smooth (alpha , X , Y , 0.1 , beta = beta ) <= loss_smooth (
55
+ zero , X , Y , 0.1 , beta = beta
56
+ )
57
+ X , Y = data_create (20 , 12 )
58
+ x = np .random .normal (size = 12 )
59
+ X = X - x [None , :]
60
+ zero = np .zeros (12 )
61
+ alpha , beta = initialise_candidates (X , Y , 0.1 )
62
+ assert beta > 0
63
+ assert loss_smooth (alpha , X , Y , 0.1 , beta = beta ) <= loss_smooth (
64
+ zero , X , Y , 0.1 , beta = beta
65
+ )
64
66
65
67
66
68
def test_initialise2 ():
67
- print ("Testing initialisation2" )
68
- X , Y = data_create (20 , 5 )
69
- zero = np .zeros (5 )
70
- alpha , beta = initialise_candidates2 (X , Y , 0.1 )
71
- assert beta > 0
72
- assert loss_smooth (alpha , X , Y , 0.1 , beta = beta ) <= loss_smooth (
73
- zero , X , Y , 0.1 , beta = beta
74
- )
75
- X , Y = data_create (20 , 12 )
76
- zero = np .zeros (12 )
77
- alpha , beta = initialise_candidates2 (X , Y , 0.1 )
78
- assert beta > 0
79
- assert loss_smooth (alpha , X , Y , 0.1 , beta = beta ) <= loss_smooth (
80
- zero , X , Y , 0.1 , beta = beta
81
- )
82
- X , Y = data_create (20 , 11 )
83
- X = add_intercept_column (X )
84
- zero = np .zeros (12 )
85
- alpha , beta = initialise_candidates2 (X , Y , 0.1 )
86
- assert beta > 0
87
- assert loss_smooth (alpha , X , Y , 0.1 , beta = beta ) <= loss_smooth (
88
- zero , X , Y , 0.1 , beta = beta
89
- )
90
- X , Y = data_create (20 , 12 )
91
- x = np .random .normal (size = 12 )
92
- X = X - x [None , :]
93
- zero = np .zeros (12 )
94
- alpha , beta = initialise_candidates2 (X , Y , 0.1 )
95
- assert beta > 0
96
- assert loss_smooth (alpha , X , Y , 0.1 , beta = beta ) <= loss_smooth (
97
- zero , X , Y , 0.1 , beta = beta
98
- )
69
+ with catch_warnings (record = True ) as w :
70
+ print ("Testing initialisation2" )
71
+ X , Y = data_create (20 , 5 )
72
+ zero = np .zeros (5 )
73
+ alpha , beta = initialise_candidates2 (X , Y , 0.1 )
74
+ assert beta > 0
75
+ assert loss_smooth (alpha , X , Y , 0.1 , beta = beta ) <= loss_smooth (
76
+ zero , X , Y , 0.1 , beta = beta
77
+ )
78
+ X , Y = data_create (20 , 12 )
79
+ zero = np .zeros (12 )
80
+ alpha , beta = initialise_candidates2 (X , Y , 0.1 )
81
+ assert beta > 0
82
+ assert loss_smooth (alpha , X , Y , 0.1 , beta = beta ) <= loss_smooth (
83
+ zero , X , Y , 0.1 , beta = beta
84
+ )
85
+ X , Y = data_create (20 , 11 )
86
+ X = add_intercept_column (X )
87
+ zero = np .zeros (12 )
88
+ alpha , beta = initialise_candidates2 (X , Y , 0.1 )
89
+ assert beta > 0
90
+ assert loss_smooth (alpha , X , Y , 0.1 , beta = beta ) <= loss_smooth (
91
+ zero , X , Y , 0.1 , beta = beta
92
+ )
93
+ X , Y = data_create (20 , 12 )
94
+ x = np .random .normal (size = 12 )
95
+ X = X - x [None , :]
96
+ zero = np .zeros (12 )
97
+ alpha , beta = initialise_candidates2 (X , Y , 0.1 )
98
+ assert beta > 0
99
+ assert loss_smooth (alpha , X , Y , 0.1 , beta = beta ) <= loss_smooth (
100
+ zero , X , Y , 0.1 , beta = beta
101
+ )
99
102
100
103
101
104
def test_slise_reg ():
102
105
print ("Testing slise regression" )
103
106
X , Y , mod = data_create2 (40 , 5 )
104
107
reg1 = regression (
105
- X , Y , epsilon = 0.1 , lambda1 = 0.01 , lambda2 = 0.01 , intercept = True , normalise = True ,
108
+ X , Y , epsilon = 0.1 , lambda1 = 1e-4 , lambda2 = 1e-4 , intercept = True , normalise = True ,
106
109
)
107
110
reg1 .print ()
108
111
Yp = mat_mul_inter (X , reg1 .coefficients )
@@ -119,7 +122,7 @@ def test_slise_reg():
119
122
), f"SLISE loss should be negative ({ reg1 .score ():.2f} , { reg1 .subset ().mean ():.2f} )"
120
123
assert 1.0 >= reg1 .subset ().mean () > 0.75
121
124
reg2 = regression (
122
- X , Y , epsilon = 0.1 , lambda1 = 0.01 , lambda2 = 0.01 , intercept = True , normalise = False ,
125
+ X , Y , epsilon = 0.1 , lambda1 = 1e-4 , lambda2 = 1e-4 , intercept = True , normalise = False ,
123
126
)
124
127
reg2 .print ()
125
128
assert (
@@ -141,7 +144,7 @@ def test_slise_exp():
141
144
X , Y , mod = data_create2 (100 , 5 )
142
145
x = np .random .normal (size = 5 )
143
146
y = np .random .normal ()
144
- reg = explain (X , Y , 0.1 , x , y , lambda1 = 0.01 , lambda2 = 0.01 , normalise = True )
147
+ reg = explain (X , Y , 0.1 , x , y , lambda1 = 1e-4 , lambda2 = 1e-4 , normalise = True )
145
148
reg .print ()
146
149
assert reg .score () <= 0 , f"Slise loss should usually be <=0 ({ reg .score ():.2f} )"
147
150
assert 1.0 >= reg .subset ().mean () > 0.0
@@ -153,11 +156,14 @@ def test_slise_exp():
153
156
assert reg .score () <= 0 , f"Slise loss should usually be <=0 ({ reg .score ():.2f} )"
154
157
assert 1.0 >= reg .subset ().mean () > 0.0
155
158
reg = explain (X , Y , 0.1 , x , y , lambda1 = 0 , lambda2 = 0 , normalise = False )
159
+ reg .print ()
156
160
assert reg .score () <= 0 , f"Slise loss should usually be <=0 ({ reg .score ():.2f} )"
157
161
assert 1.0 >= reg .subset ().mean () > 0.0
158
162
reg = explain (X , Y , 0.1 , 19 , lambda1 = 0.01 , lambda2 = 0.01 , normalise = False )
163
+ reg .print ()
159
164
assert reg .score () <= 0 , f"Slise loss should usually be <=0 ({ reg .score ():.2f} )"
160
165
assert 1.0 >= reg .subset ().mean () > 0.0
161
166
reg = explain (X , Y , 0.1 , 19 , lambda1 = 0 , lambda2 = 0 , normalise = False )
167
+ reg .print ()
162
168
assert reg .score () <= 0 , f"Slise loss should usually be <=0 ({ reg .score ():.2f} )"
163
169
assert 1.0 >= reg .subset ().mean () > 0.0
0 commit comments