@@ -6,6 +6,7 @@ The [MLJ.jl](https://github.com/alan-turing-institute/MLJ.jl) interface to [JLBo
6
6
## Usage Example
7
7
8
8
```` julia
9
+
9
10
using RDatasets;
10
11
iris = dataset (" datasets" , " iris" );
11
12
iris[! , :is_setosa ] = iris. Species .== " setosa" ;
@@ -20,15 +21,15 @@ model = JLBoostClassifier()
20
21
21
22
````
22
23
JLBoostClassifier(
23
- loss = JLBoost. LogitLogLoss(),
24
+ loss = LogitLogLoss(),
24
25
nrounds = 1,
25
26
subsample = 1.0,
26
27
eta = 1.0,
27
28
max_depth = 6,
28
29
min_child_weight = 1.0,
29
30
lambda = 0.0,
30
31
gamma = 0.0,
31
- colsample_bytree = 1) @813
32
+ colsample_bytree = 1) @810
32
33
````
33
34
34
35
@@ -40,15 +41,17 @@ JLBoostClassifier(
40
41
Put the model and data in a machine
41
42
42
43
```` julia
44
+
43
45
mljmachine = machine (model, X, y)
44
46
````
45
47
46
48
47
49
````
48
- Machine{JLBoostClassifier} @138 trained 0 times.
50
+ Machine{JLBoostClassifier} @772 trained 0 times.
49
51
args:
50
- 1: Source @021 ⏎ `Table{AbstractArray{Continuous,1}}`
51
- 2: Source @672 ⏎ `AbstractArray{Count,1}`
52
+ 1: Source @097 ⏎ `ScientificTypes.Table{AbstractArray{ScientificTypes.C
53
+ ontinuous,1}}`
54
+ 2: Source @077 ⏎ `AbstractArray{ScientificTypes.Count,1}`
52
55
````
53
56
54
57
@@ -58,6 +61,7 @@ Machine{JLBoostClassifier} @138 trained 0 times.
58
61
Fit model using machine
59
62
60
63
```` julia
64
+
61
65
fit! (mljmachine)
62
66
````
63
67
@@ -77,10 +81,11 @@ Choosing a split on SepalLength
77
81
Choosing a split on SepalWidth
78
82
Choosing a split on PetalLength
79
83
Choosing a split on PetalWidth
80
- Machine{JLBoostClassifier} @138 trained 1 time.
84
+ Machine{JLBoostClassifier} @772 trained 1 time.
81
85
args:
82
- 1: Source @021 ⏎ `Table{AbstractArray{Continuous,1}}`
83
- 2: Source @672 ⏎ `AbstractArray{Count,1}`
86
+ 1: Source @097 ⏎ `ScientificTypes.Table{AbstractArray{ScientificTypes.C
87
+ ontinuous,1}}`
88
+ 2: Source @077 ⏎ `AbstractArray{ScientificTypes.Count,1}`
84
89
````
85
90
86
91
@@ -90,32 +95,34 @@ Machine{JLBoostClassifier} @138 trained 1 time.
90
95
Predict using machine
91
96
92
97
```` julia
98
+
93
99
predict (mljmachine, X)
94
100
````
95
101
96
102
97
103
````
98
- 150-element Array{UnivariateFinite{Multiclass{2},Bool,UInt32,Float64},1}:
99
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
100
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
101
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
102
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
103
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
104
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
105
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
106
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
107
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
108
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
104
+ 150-element Array{MLJBase.UnivariateFinite{ScientificTypes.Multiclass{2},Bo
105
+ ol,UInt32,Float64},1}:
106
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
107
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
108
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
109
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
110
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
111
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
112
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
113
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
114
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
115
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
109
116
⋮
110
- UnivariateFinite{Multiclass{2}}(false=>0.119, true=>0.881)
111
- UnivariateFinite{Multiclass{2}}(false=>0.119, true=>0.881)
112
- UnivariateFinite{Multiclass{2}}(false=>0.119, true=>0.881)
113
- UnivariateFinite{Multiclass{2}}(false=>0.119, true=>0.881)
114
- UnivariateFinite{Multiclass{2}}(false=>0.119, true=>0.881)
115
- UnivariateFinite{Multiclass{2}}(false=>0.119, true=>0.881)
116
- UnivariateFinite{Multiclass{2}}(false=>0.119, true=>0.881)
117
- UnivariateFinite{Multiclass{2}}(false=>0.119, true=>0.881)
118
- UnivariateFinite{Multiclass{2}}(false=>0.119, true=>0.881)
117
+ UnivariateFinite{ScientificTypes. Multiclass{2}}(false=>0.119, true=>0.881)
118
+ UnivariateFinite{ScientificTypes. Multiclass{2}}(false=>0.119, true=>0.881)
119
+ UnivariateFinite{ScientificTypes. Multiclass{2}}(false=>0.119, true=>0.881)
120
+ UnivariateFinite{ScientificTypes. Multiclass{2}}(false=>0.119, true=>0.881)
121
+ UnivariateFinite{ScientificTypes. Multiclass{2}}(false=>0.119, true=>0.881)
122
+ UnivariateFinite{ScientificTypes. Multiclass{2}}(false=>0.119, true=>0.881)
123
+ UnivariateFinite{ScientificTypes. Multiclass{2}}(false=>0.119, true=>0.881)
124
+ UnivariateFinite{ScientificTypes. Multiclass{2}}(false=>0.119, true=>0.881)
125
+ UnivariateFinite{ScientificTypes. Multiclass{2}}(false=>0.119, true=>0.881)
119
126
````
120
127
121
128
@@ -125,6 +132,7 @@ predict(mljmachine, X)
125
132
Feature importance using machine
126
133
127
134
```` julia
135
+
128
136
feature_importance (fitted_params (mljmachine). fitresult, X, y)
129
137
````
130
138
@@ -146,12 +154,13 @@ feature_importance(fitted_params(mljmachine).fitresult, X, y)
146
154
Data preparation: need to convert ` y ` to categorical
147
155
148
156
```` julia
157
+
149
158
y_cate = categorical (y)
150
159
````
151
160
152
161
153
162
````
154
- 150-element CategoricalArray{Bool,1,UInt32}:
163
+ 150-element CategoricalArrays. CategoricalArray{Bool,1,UInt32}:
155
164
true
156
165
true
157
166
true
@@ -181,6 +190,7 @@ y_cate = categorical(y)
181
190
Set up some hyperparameter ranges
182
191
183
192
```` julia
193
+
184
194
using JLBoost, JLBoostMLJ, MLJ
185
195
jlb = JLBoostClassifier ()
186
196
r1 = range (jlb, :nrounds , lower= 1 , upper = 6 )
@@ -199,16 +209,18 @@ MLJBase.NumericRange(Float64, :eta, ... )
199
209
200
210
Set up the machine
201
211
```` julia
212
+
202
213
tm = TunedModel (model = jlb, ranges = [r1, r2, r3], measure = cross_entropy)
203
214
m = machine (tm, X, y_cate)
204
215
````
205
216
206
217
207
218
````
208
- Machine{ProbabilisticTunedModel{Grid,…}} @666 trained 0 times.
219
+ Machine{ProbabilisticTunedModel{Grid,…}} @388 trained 0 times.
209
220
args:
210
- 1: Source @209 ⏎ `Table{AbstractArray{Continuous,1}}`
211
- 2: Source @449 ⏎ `AbstractArray{Multiclass{2},1}`
221
+ 1: Source @578 ⏎ `ScientificTypes.Table{AbstractArray{ScientificTypes.C
222
+ ontinuous,1}}`
223
+ 2: Source @226 ⏎ `AbstractArray{ScientificTypes.Multiclass{2},1}`
212
224
````
213
225
214
226
@@ -217,15 +229,17 @@ Machine{ProbabilisticTunedModel{Grid,…}} @666 trained 0 times.
217
229
218
230
Fit it!
219
231
```` julia
232
+
220
233
fit! (m)
221
234
````
222
235
223
236
224
237
````
225
- Machine{ProbabilisticTunedModel{Grid,…}} @666 trained 1 time.
238
+ Machine{ProbabilisticTunedModel{Grid,…}} @388 trained 1 time.
226
239
args:
227
- 1: Source @209 ⏎ `Table{AbstractArray{Continuous,1}}`
228
- 2: Source @449 ⏎ `AbstractArray{Multiclass{2},1}`
240
+ 1: Source @578 ⏎ `ScientificTypes.Table{AbstractArray{ScientificTypes.C
241
+ ontinuous,1}}`
242
+ 2: Source @226 ⏎ `AbstractArray{ScientificTypes.Multiclass{2},1}`
229
243
````
230
244
231
245
@@ -234,6 +248,7 @@ Machine{ProbabilisticTunedModel{Grid,…}} @666 trained 1 time.
234
248
235
249
Inspected the tuned parameters
236
250
```` julia
251
+
237
252
fitted_params (m). best_model. max_depth
238
253
fitted_params (m). best_model. nrounds
239
254
fitted_params (m). best_model. eta
@@ -252,6 +267,7 @@ fitted_params(m).best_model.eta
252
267
253
268
Fit the model with ` verbosity = 1 `
254
269
```` julia
270
+
255
271
mljmodel = fit (model, 1 , X, y)
256
272
````
257
273
@@ -271,15 +287,15 @@ Choosing a split on SepalLength
271
287
Choosing a split on SepalWidth
272
288
Choosing a split on PetalLength
273
289
Choosing a split on PetalWidth
274
- (fitresult = (treemodel = JLBoost.JLBoostTrees. JLBoostTreeModel(JLBoost.JLB
275
- oostTrees.AbstractJLBoostTree[eta = 1.0 (tree weight)
290
+ (fitresult = (treemodel = JLBoostTreeModel(AbstractJLBoostTree[eta = 1.0 (t
291
+ ree weight)
276
292
277
293
-- PetalLength <= 1.9
278
294
---- weight = 2.0
279
295
280
296
-- PetalLength > 1.9
281
297
---- weight = -2.0
282
- ], JLBoost. LogitLogLoss(), :__y__),
298
+ ], LogitLogLoss(), :__y__),
283
299
target_levels = Bool[0, 1],),
284
300
cache = nothing,
285
301
report = (AUC = 0.16666666666666669,
@@ -296,32 +312,34 @@ oostTrees.AbstractJLBoostTree[eta = 1.0 (tree weight)
296
312
Predicting using the model
297
313
298
314
```` julia
315
+
299
316
predict (model, mljmodel. fitresult, X)
300
317
````
301
318
302
319
303
320
````
304
- 150-element Array{UnivariateFinite{Multiclass{2},Bool,UInt32,Float64},1}:
305
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
306
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
307
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
308
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
309
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
310
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
311
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
312
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
313
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
314
- UnivariateFinite{Multiclass{2}}(false=>0.881, true=>0.119)
321
+ 150-element Array{MLJBase.UnivariateFinite{ScientificTypes.Multiclass{2},Bo
322
+ ol,UInt32,Float64},1}:
323
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
324
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
325
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
326
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
327
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
328
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
329
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
330
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
331
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
332
+ UnivariateFinite{ScientificTypes.Multiclass{2}}(false=>0.881, true=>0.119)
315
333
⋮
316
- UnivariateFinite{Multiclass{2}}(false=>0.119, true=>0.881)
317
- UnivariateFinite{Multiclass{2}}(false=>0.119, true=>0.881)
318
- UnivariateFinite{Multiclass{2}}(false=>0.119, true=>0.881)
319
- UnivariateFinite{Multiclass{2}}(false=>0.119, true=>0.881)
320
- UnivariateFinite{Multiclass{2}}(false=>0.119, true=>0.881)
321
- UnivariateFinite{Multiclass{2}}(false=>0.119, true=>0.881)
322
- UnivariateFinite{Multiclass{2}}(false=>0.119, true=>0.881)
323
- UnivariateFinite{Multiclass{2}}(false=>0.119, true=>0.881)
324
- UnivariateFinite{Multiclass{2}}(false=>0.119, true=>0.881)
334
+ UnivariateFinite{ScientificTypes. Multiclass{2}}(false=>0.119, true=>0.881)
335
+ UnivariateFinite{ScientificTypes. Multiclass{2}}(false=>0.119, true=>0.881)
336
+ UnivariateFinite{ScientificTypes. Multiclass{2}}(false=>0.119, true=>0.881)
337
+ UnivariateFinite{ScientificTypes. Multiclass{2}}(false=>0.119, true=>0.881)
338
+ UnivariateFinite{ScientificTypes. Multiclass{2}}(false=>0.119, true=>0.881)
339
+ UnivariateFinite{ScientificTypes. Multiclass{2}}(false=>0.119, true=>0.881)
340
+ UnivariateFinite{ScientificTypes. Multiclass{2}}(false=>0.119, true=>0.881)
341
+ UnivariateFinite{ScientificTypes. Multiclass{2}}(false=>0.119, true=>0.881)
342
+ UnivariateFinite{ScientificTypes. Multiclass{2}}(false=>0.119, true=>0.881)
325
343
````
326
344
327
345
@@ -332,6 +350,7 @@ Feature Importance for simple fitting
332
350
One can obtain the feature importance using the ` feature_importance ` function
333
351
334
352
```` julia
353
+
335
354
feature_importance (mljmodel. fitresult. treemodel, X, y)
336
355
````
337
356
0 commit comments