-
-
Notifications
You must be signed in to change notification settings - Fork 403
/
create_filter.html
465 lines (437 loc) · 31.8 KB
/
create_filter.html
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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
<!DOCTYPE html>
<!-- Generated by pkgdown: do not edit by hand --><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Google Site Verification --><meta name="google-site-verification" content="BrjL5fpoyHZu1rR8rwnnM2MBO3u3iIFB8NsmSuOsY84">
<title>Integrating Another Filter Method • mlr</title>
<!-- jquery --><script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script><!-- Bootstrap --><link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script><!-- Font Awesome icons --><link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
<!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.7.1/clipboard.min.js" integrity="sha384-cV+rhyOuRHc9Ub/91rihWcGmMmCXDeksTtCihMupQHSsi8GIIRDG0ThDc3HGQFJ3" crossorigin="anonymous"></script><!-- pkgdown --><link href="../../pkgdown.css" rel="stylesheet">
<script src="../../jquery.sticky-kit.min.js"></script><script src="../../pkgdown.js"></script><link href="../../extra.css" rel="stylesheet">
<script src="../../extra.js"></script><meta property="og:title" content="Integrating Another Filter Method">
<meta property="og:description" content="">
<meta name="twitter:card" content="summary">
<!-- mathjax --><script src="https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script><!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]--><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css">
<link rel="icon" type="image/png" href="https://mlr-org.github.io/mlr/favicon.ico">
<link rel="apple-touch-icon" type="image/png" href="https://mlr-org.github.io/mlr/favicon.ico">
</head>
<body>
<div class="container template-article">
<header><div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="navbar-brand-container">
<a class="navbar-brand" href="../../index.html"></a>
</div>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
Basics
<span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li>
<a href="../../articles/tutorial/task.html">Tasks</a>
</li>
<li>
<a href="../../articles/tutorial/learner.html">Learners</a>
</li>
<li>
<a href="../../articles/tutorial/train.html">Train</a>
</li>
<li>
<a href="../../articles/tutorial/predict.html">Predict</a>
</li>
<li>
<a href="../../articles/tutorial/preproc.html">Preprocessing</a>
</li>
<li>
<a href="../../articles/tutorial/performance.html">Performance</a>
</li>
<li>
<a href="../../articles/tutorial/resample.html">Resampling</a>
</li>
<li>
<a href="../../articles/tutorial/tune.html">Tuning</a>
</li>
<li>
<a href="../../articles/tutorial/benchmark_experiments.html">Benchmark Experiments</a>
</li>
<li>
<a href="../../articles/tutorial/parallelization.html">Parallelization</a>
</li>
<li>
<a href="../../articles/tutorial/visualization.html">Visualization</a>
</li>
<li>
<a href="../../articles/tutorial/usecase_regression.html">Use case - Regression</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
Advanced
<span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li>
<a href="../../articles/tutorial/configureMlr.html">Configuration</a>
</li>
<li>
<a href="../../articles/tutorial/wrapper.html">Wrapped Learners</a>
</li>
<li>
<a href="../../articles/tutorial/impute.html">Imputation</a>
</li>
<li>
<a href="../../articles/tutorial/bagging.html">Generic Bagging</a>
</li>
<li>
<a href="../../articles/tutorial/advanced_tune.html">Advanced Tuning</a>
</li>
<li>
<a href="../../articles/tutorial/feature_selection.html">Feature Selection/Filtering</a>
</li>
<li>
<a href="../../articles/tutorial/nested_resampling.html">Nested Resampling</a>
</li>
<li>
<a href="../../articles/tutorial/cost_sensitive_classif.html">Cost-Sensitive Classification</a>
</li>
<li>
<a href="../../articles/tutorial/over_and_undersampling.html">Imbalanced Classification Problems</a>
</li>
<li>
<a href="../../articles/tutorial/roc_analysis.html">ROC Analysis and Performance Curves</a>
</li>
<li>
<a href="../../articles/tutorial/multilabel.html">Multilabel Classification</a>
</li>
<li>
<a href="../../articles/tutorial/learning_curve.html">Learning Curve Analysis</a>
</li>
<li>
<a href="../../articles/tutorial/partial_dependence.html">Partial Dependence Plots</a>
</li>
<li>
<a href="../../articles/tutorial/classifier_calibration.html">Classifier Calibration</a>
</li>
<li>
<a href="../../articles/tutorial/hyperpar_tuning_effects.html">Hyperparameter Tuning Effects</a>
</li>
<li>
<a href="../../articles/tutorial/out_of_bag_predictions.html">Out-of-Bag Predictions</a>
</li>
<li>
<a href="../../articles/tutorial/handling_of_spatial_data.html">Handling of Spatial Data</a>
</li>
<li>
<a href="../../articles/tutorial/functional_data.html">Functional Data</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
Extending
<span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li>
<a href="../../articles/tutorial/create_learner.html">Create Custom Learners</a>
</li>
<li>
<a href="../../articles/tutorial/create_measure.html">Create Custom Measures</a>
</li>
<li>
<a href="../../articles/tutorial/create_imputation.html">Create Imputation Methods</a>
</li>
<li>
<a href="../../articles/tutorial/create_filter.html">Create Custom Filters</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
Appendix
<span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li>
<a href="../../reference/index.html">Function Reference</a>
</li>
<li>
<a href="../../news/index.html">News</a>
</li>
<li>
<a href="../../articles/tutorial/example_tasks.html">Example Tasks</a>
</li>
<li>
<a href="../../articles/tutorial/integrated_learners.html">Integrated Learners</a>
</li>
<li>
<a href="../../articles/tutorial/measures.html">Implemented Measures</a>
</li>
<li>
<a href="../../articles/tutorial/filter_methods.html">Integrated Filter Methods</a>
</li>
<li>
<a href="../../articles/tutorial/mlr_publications.html">mlr Publications</a>
</li>
<li>
<a href="../../articles/tutorial/talks_videos_workshops.html">Talks, Videos and Workshops</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
mlr-org Packages
<span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li>
<a href="https://github.com/mlr-org/mlrMBO">mlrMBO</a>
</li>
<li>
<a href="https://github.com/mlr-org/mlrCPO">mlrCPO</a>
</li>
<li>
<a href="https://jakob-r.de/mlrHyperopt/index.html">mlrHyperopt</a>
</li>
<li>
<a href="https://openml.github.io/openml-r/vignettes/OpenML.html">OpenML</a>
</li>
</ul>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li>
<a href="https://github.com/mlr-org/mlr">
<span class="fa fa-github fa-lg"></span>
</a>
</li>
<li>
<a href="https://mlr-org.slack.com">
<span class="fa fa-slack"></span>
</a>
</li>
<li>
<a href="https://stackoverflow.com/questions/tagged/mlr">
<span class="fa fa-stack-overflow"></span>
</a>
</li>
<li>
<a href="https://mlr-blog.netlify.com/">
<span class="fa fa-rss"></span>
</a>
</li>
</ul>
<form class="navbar-form navbar-right" role="search">
<div class="form-group">
<input type="search" class="form-control" id="search-input" placeholder="Search..." aria-label="Search for..." autocomplete="off">
</div>
</form>
</div>
<!--/.nav-collapse -->
</div>
<!--/.container -->
</div>
<!--/.navbar -->
</header><div class="row">
<div class="col-md-9">
<div class="page-header toc-ignore">
<h1>Integrating Another Filter Method</h1>
<!--The 'toc' block was inserted manually by @pat-s. It triggeres the inline ToC in the vignettes.-->
<div id="toc">
<h3 class="hasAnchor">
<a href="#toc" class="anchor"></a>Table of Contents</h3>
<ul>
<li><a href="#filter-objects">Filter objects</a></li>
<li><a href="#writing-a-new-filter-method">Writing a new filter method</a></li>
</ul>
</div>
<small>Source: <a href="https://github.com/mlr-org/mlr/blob/master/vignettes/tutorial/create_filter.Rmd"><code>vignettes/tutorial/create_filter.Rmd</code></a></small>
</div>
<div class="contents">
<p>A lot of feature filter methods are already integrated in <code>mlr</code> and a complete list is given in the <a href="filter_methods.html" target="_blank">Appendix</a> or can be obtained using <code><a href="../../reference/listFilterMethods.html">listFilterMethods()</a></code>. You can easily add another filter, be it a brand new one or a method which is already implemented in another package, via function <code><a href="../../reference/makeFilter.html">makeFilter()</a></code>.</p>
<div id="filter-objects" class="section level1">
<h1 class="hasAnchor">
<a href="#filter-objects" class="anchor"></a>Filter objects</h1>
<p>In <code>mlr</code> all filter methods are objects of class Filter (<code><a href="../../reference/makeFilter.html">makeFilter()</a></code>) and are registered in an environment called <code>.FilterRegister</code> (where <code><a href="../../reference/listFilterMethods.html">listFilterMethods()</a></code> looks them up to compile the list of available methods). To get to know their structure let’s have a closer look at the <code>"rank.correlation"</code> filter.</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb1-1" data-line-number="1">filters =<span class="st"> </span><span class="kw">as.list</span>(mlr<span class="op">:::</span>.FilterRegister)</a>
<a class="sourceLine" id="cb1-2" data-line-number="2">filters<span class="op">$</span>rank.correlation</a>
<a class="sourceLine" id="cb1-3" data-line-number="3"><span class="co">## Filter: 'rank.correlation'</span></a>
<a class="sourceLine" id="cb1-4" data-line-number="4"><span class="co">## Packages: ''</span></a>
<a class="sourceLine" id="cb1-5" data-line-number="5"><span class="co">## Supported tasks: regr</span></a>
<a class="sourceLine" id="cb1-6" data-line-number="6"><span class="co">## Supported features: numerics</span></a>
<a class="sourceLine" id="cb1-7" data-line-number="7"></a>
<a class="sourceLine" id="cb1-8" data-line-number="8"><span class="kw">str</span>(filters<span class="op">$</span>rank.correlation)</a>
<a class="sourceLine" id="cb1-9" data-line-number="9"><span class="co">## List of 6</span></a>
<a class="sourceLine" id="cb1-10" data-line-number="10"><span class="co">## $ name : chr "rank.correlation"</span></a>
<a class="sourceLine" id="cb1-11" data-line-number="11"><span class="co">## $ desc : chr "Spearman's correlation between feature and target"</span></a>
<a class="sourceLine" id="cb1-12" data-line-number="12"><span class="co">## $ pkg : chr(0) </span></a>
<a class="sourceLine" id="cb1-13" data-line-number="13"><span class="co">## $ supported.tasks : chr "regr"</span></a>
<a class="sourceLine" id="cb1-14" data-line-number="14"><span class="co">## $ supported.features: chr "numerics"</span></a>
<a class="sourceLine" id="cb1-15" data-line-number="15"><span class="co">## $ fun :function (task, nselect, ...) </span></a>
<a class="sourceLine" id="cb1-16" data-line-number="16"><span class="co">## ..- attr(*, "srcref")= 'srcref' int [1:8] 325 9 328 3 9 3 2308 2311</span></a>
<a class="sourceLine" id="cb1-17" data-line-number="17"><span class="co">## .. ..- attr(*, "srcfile")=Classes 'srcfilealias', 'srcfile' <environment: 0x55db8ddf6dc0> </span></a>
<a class="sourceLine" id="cb1-18" data-line-number="18"><span class="co">## - attr(*, "class")= chr "Filter"</span></a>
<a class="sourceLine" id="cb1-19" data-line-number="19"></a>
<a class="sourceLine" id="cb1-20" data-line-number="20">filters<span class="op">$</span>rank.correlation<span class="op">$</span>fun</a>
<a class="sourceLine" id="cb1-21" data-line-number="21"><span class="co">## function(task, nselect, ...) {</span></a>
<a class="sourceLine" id="cb1-22" data-line-number="22"><span class="co">## data = getTaskData(task, target.extra = TRUE)</span></a>
<a class="sourceLine" id="cb1-23" data-line-number="23"><span class="co">## abs(cor(as.matrix(data$data), data$target, use = "pairwise.complete.obs", method = "spearman")[, 1L])</span></a>
<a class="sourceLine" id="cb1-24" data-line-number="24"><span class="co">## }</span></a>
<a class="sourceLine" id="cb1-25" data-line-number="25"><span class="co">## <bytecode: 0x55db8dc9fe00></span></a>
<a class="sourceLine" id="cb1-26" data-line-number="26"><span class="co">## <environment: namespace:mlr></span></a></code></pre></div>
<p>The core element is <code>$fun</code> which calculates the feature importance. For the <code>"rank.correlation"</code> filter it just extracts the data and formula from the <code>task</code> and passes them on to the <code>base::cor()</code> function.</p>
<p>Additionally, each Filter (<code><a href="../../reference/makeFilter.html">makeFilter()</a></code>) object has a <code>$name</code>, which should be short and is for example used to annotate graphics (cp. <code><a href="../../reference/plotFilterValues.html">plotFilterValues()</a></code>), and a slightly more detailed description in slot <code>$desc</code>. If the filter method is implemented by another package its name is given in the <code>$pkg</code> member. Moreover, the supported task types and feature types are listed.</p>
</div>
<div id="writing-a-new-filter-method" class="section level1">
<h1 class="hasAnchor">
<a href="#writing-a-new-filter-method" class="anchor"></a>Writing a new filter method</h1>
<p>You can integrate your own filter method using <code><a href="../../reference/makeFilter.html">makeFilter()</a></code>. This function generates a Filter (<code><a href="../../reference/makeFilter.html">makeFilter()</a></code>) object and also registers it in the <code>.FilterRegister</code> environment.</p>
<p>The arguments of <code><a href="../../reference/makeFilter.html">makeFilter()</a></code> correspond to the slot names of the Filter (<code><a href="../../reference/makeFilter.html">makeFilter()</a></code>) object above. Currently, feature filtering is only supported for supervised learning tasks and possible values for <code>supported.tasks</code> are <code>"regr"</code>, <code>"classif"</code> and <code>"surv"</code>. <code>supported.features</code> can be <code>"numerics"</code>, <code>"factors"</code> and <code>"ordered"</code>.</p>
<p><code>fun</code> must be a function with at least the following formal arguments:</p>
<ul>
<li>
<code>task</code> is a <code>mlr</code> learning <code><a href="../../reference/Task.html">Task()</a></code>.</li>
<li>
<code>nselect</code> corresponds to the argument of <code><a href="../../reference/generateFilterValuesData.html">generateFilterValuesData()</a></code> of the same name and specifies the number of features for which to calculate importance scores. Some filter methods have the option to stop after a certain number of top-ranked features have been found in order to save time and ressources when the number of features is high. The majority of filter methods integrated in <code>mlr</code> doesn’t support this and thus <code>nselect</code> is ignored in most cases. An exception is the minimum redundancy maximum relevance filter from package <code>mRMRe</code>.</li>
<li>
<code>...</code> for additional arguments.</li>
</ul>
<p><code>fun</code> must return a named vector of feature importance values. By convention the most important features receive the highest scores.</p>
<p>If you are making use of the <code>nselect</code> option <code>fun</code> can either return a vector of <code>nselect</code> scores or a vector as long as the total numbers of features in the task filled with <code>NAs</code> for all features whose scores weren’t calculated.</p>
<p>When writing <code>fun</code> many of the getter functions for <code><a href="../../reference/Task.html">Task()</a></code>s come in handy, particularly <code><a href="../../reference/getTaskData.html">getTaskData()</a></code>, <code><a href="../../reference/getTaskFormula.html">getTaskFormula()</a></code> and <code><a href="../../reference/getTaskFeatureNames.html">getTaskFeatureNames()</a></code>. It’s worth having a closer look at <code><a href="../../reference/getTaskData.html">getTaskData()</a></code> which provides many options for formatting the data and recoding the target variable.</p>
<p>As a short demonstration we write a totally meaningless filter that determines the importance of features according to alphabetical order, i.e., giving highest scores to features with names that come first (<code>decreasing = TRUE</code>) or last (<code>decreasing = FALSE</code>) in the alphabet.</p>
<div class="sourceCode" id="cb2"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb2-1" data-line-number="1"><span class="kw"><a href="../../reference/makeFilter.html">makeFilter</a></span>(</a>
<a class="sourceLine" id="cb2-2" data-line-number="2"> <span class="dt">name =</span> <span class="st">"nonsense.filter"</span>,</a>
<a class="sourceLine" id="cb2-3" data-line-number="3"> <span class="dt">desc =</span> <span class="st">"Calculates scores according to alphabetical order of features"</span>,</a>
<a class="sourceLine" id="cb2-4" data-line-number="4"> <span class="dt">pkg =</span> <span class="st">""</span>,</a>
<a class="sourceLine" id="cb2-5" data-line-number="5"> <span class="dt">supported.tasks =</span> <span class="kw">c</span>(<span class="st">"classif"</span>, <span class="st">"regr"</span>, <span class="st">"surv"</span>),</a>
<a class="sourceLine" id="cb2-6" data-line-number="6"> <span class="dt">supported.features =</span> <span class="kw">c</span>(<span class="st">"numerics"</span>, <span class="st">"factors"</span>, <span class="st">"ordered"</span>),</a>
<a class="sourceLine" id="cb2-7" data-line-number="7"> <span class="dt">fun =</span> <span class="cf">function</span>(task, nselect, <span class="dt">decreasing =</span> <span class="ot">TRUE</span>, ...) {</a>
<a class="sourceLine" id="cb2-8" data-line-number="8"> feats =<span class="st"> </span><span class="kw"><a href="../../reference/getTaskFeatureNames.html">getTaskFeatureNames</a></span>(task)</a>
<a class="sourceLine" id="cb2-9" data-line-number="9"> imp =<span class="st"> </span><span class="kw">order</span>(feats, <span class="dt">decreasing =</span> decreasing)</a>
<a class="sourceLine" id="cb2-10" data-line-number="10"> <span class="kw">names</span>(imp) =<span class="st"> </span>feats</a>
<a class="sourceLine" id="cb2-11" data-line-number="11"> imp</a>
<a class="sourceLine" id="cb2-12" data-line-number="12"> }</a>
<a class="sourceLine" id="cb2-13" data-line-number="13">)</a>
<a class="sourceLine" id="cb2-14" data-line-number="14"><span class="co">## Filter: 'nonsense.filter'</span></a>
<a class="sourceLine" id="cb2-15" data-line-number="15"><span class="co">## Packages: ''</span></a>
<a class="sourceLine" id="cb2-16" data-line-number="16"><span class="co">## Supported tasks: classif,regr,surv</span></a>
<a class="sourceLine" id="cb2-17" data-line-number="17"><span class="co">## Supported features: numerics,factors,ordered</span></a></code></pre></div>
<p>The <code>nonsense.filter</code> is now registered in <code>mlr</code> and shown by <code><a href="../../reference/listFilterMethods.html">listFilterMethods()</a></code>.</p>
<div class="sourceCode" id="cb3"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb3-1" data-line-number="1"><span class="kw"><a href="../../reference/listFilterMethods.html">listFilterMethods</a></span>()<span class="op">$</span>id</a>
<a class="sourceLine" id="cb3-2" data-line-number="2"><span class="co">## [1] anova.test </span></a>
<a class="sourceLine" id="cb3-3" data-line-number="3"><span class="co">## [2] auc </span></a>
<a class="sourceLine" id="cb3-4" data-line-number="4"><span class="co">## [3] carscore </span></a>
<a class="sourceLine" id="cb3-5" data-line-number="5"><span class="co">## [4] cforest.importance </span></a>
<a class="sourceLine" id="cb3-6" data-line-number="6"><span class="co">## [5] FSelector_chi.squared </span></a>
<a class="sourceLine" id="cb3-7" data-line-number="7"><span class="co">## [6] FSelector_gain.ratio </span></a>
<a class="sourceLine" id="cb3-8" data-line-number="8"><span class="co">## [7] FSelector_information.gain </span></a>
<a class="sourceLine" id="cb3-9" data-line-number="9"><span class="co">## [8] FSelector_oneR </span></a>
<a class="sourceLine" id="cb3-10" data-line-number="10"><span class="co">## [9] FSelector_relief </span></a>
<a class="sourceLine" id="cb3-11" data-line-number="11"><span class="co">## [10] FSelector_symmetrical.uncertainty </span></a>
<a class="sourceLine" id="cb3-12" data-line-number="12"><span class="co">## [11] FSelectorRcpp_gain.ratio </span></a>
<a class="sourceLine" id="cb3-13" data-line-number="13"><span class="co">## [12] FSelectorRcpp_information.gain </span></a>
<a class="sourceLine" id="cb3-14" data-line-number="14"><span class="co">## [13] FSelectorRcpp_symmetrical.uncertainty</span></a>
<a class="sourceLine" id="cb3-15" data-line-number="15"><span class="co">## [14] kruskal.test </span></a>
<a class="sourceLine" id="cb3-16" data-line-number="16"><span class="co">## [15] linear.correlation </span></a>
<a class="sourceLine" id="cb3-17" data-line-number="17"><span class="co">## [16] mrmr </span></a>
<a class="sourceLine" id="cb3-18" data-line-number="18"><span class="co">## [17] nonsense.filter </span></a>
<a class="sourceLine" id="cb3-19" data-line-number="19"><span class="co">## [18] permutation.importance </span></a>
<a class="sourceLine" id="cb3-20" data-line-number="20"><span class="co">## [19] praznik_CMIM </span></a>
<a class="sourceLine" id="cb3-21" data-line-number="21"><span class="co">## [20] praznik_DISR </span></a>
<a class="sourceLine" id="cb3-22" data-line-number="22"><span class="co">## [21] praznik_JMI </span></a>
<a class="sourceLine" id="cb3-23" data-line-number="23"><span class="co">## [22] praznik_JMIM </span></a>
<a class="sourceLine" id="cb3-24" data-line-number="24"><span class="co">## [23] praznik_MIM </span></a>
<a class="sourceLine" id="cb3-25" data-line-number="25"><span class="co">## [24] praznik_MRMR </span></a>
<a class="sourceLine" id="cb3-26" data-line-number="26"><span class="co">## [25] praznik_NJMIM </span></a>
<a class="sourceLine" id="cb3-27" data-line-number="27"><span class="co">## [26] randomForest.importance </span></a>
<a class="sourceLine" id="cb3-28" data-line-number="28"><span class="co">## [27] randomForestSRC.rfsrc </span></a>
<a class="sourceLine" id="cb3-29" data-line-number="29"><span class="co">## [28] randomForestSRC.var.select </span></a>
<a class="sourceLine" id="cb3-30" data-line-number="30"><span class="co">## [29] ranger.impurity </span></a>
<a class="sourceLine" id="cb3-31" data-line-number="31"><span class="co">## [30] ranger.permutation </span></a>
<a class="sourceLine" id="cb3-32" data-line-number="32"><span class="co">## [31] rank.correlation </span></a>
<a class="sourceLine" id="cb3-33" data-line-number="33"><span class="co">## [32] univariate.model.score </span></a>
<a class="sourceLine" id="cb3-34" data-line-number="34"><span class="co">## [33] variance </span></a>
<a class="sourceLine" id="cb3-35" data-line-number="35"><span class="co">## 36 Levels: anova.test auc carscore ... variance</span></a></code></pre></div>
<p>You can use it like any other filter method already integrated in <code>mlr</code> (i.e., via the <code>method</code> argument of <code><a href="../../reference/generateFilterValuesData.html">generateFilterValuesData()</a></code> or the <code>fw.method</code> argument of <code><a href="../../reference/makeFilterWrapper.html">makeFilterWrapper()</a></code>; see also the page on <a href="feature_selection.html" target="_blank">feature selection</a>.</p>
<div class="sourceCode" id="cb4"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb4-1" data-line-number="1">d =<span class="st"> </span><span class="kw"><a href="../../reference/generateFilterValuesData.html">generateFilterValuesData</a></span>(iris.task, <span class="dt">method =</span> <span class="kw">c</span>(<span class="st">"nonsense.filter"</span>, <span class="st">"anova.test"</span>))</a>
<a class="sourceLine" id="cb4-2" data-line-number="2">d</a>
<a class="sourceLine" id="cb4-3" data-line-number="3"><span class="co">## FilterValues:</span></a>
<a class="sourceLine" id="cb4-4" data-line-number="4"><span class="co">## Task: iris-example</span></a>
<a class="sourceLine" id="cb4-5" data-line-number="5"><span class="co">## name type nonsense.filter anova.test</span></a>
<a class="sourceLine" id="cb4-6" data-line-number="6"><span class="co">## 1 Sepal.Length numeric 2 119.26450</span></a>
<a class="sourceLine" id="cb4-7" data-line-number="7"><span class="co">## 2 Sepal.Width numeric 1 49.16004</span></a>
<a class="sourceLine" id="cb4-8" data-line-number="8"><span class="co">## 3 Petal.Length numeric 4 1180.16118</span></a>
<a class="sourceLine" id="cb4-9" data-line-number="9"><span class="co">## 4 Petal.Width numeric 3 960.00715</span></a>
<a class="sourceLine" id="cb4-10" data-line-number="10"></a>
<a class="sourceLine" id="cb4-11" data-line-number="11"><span class="kw"><a href="../../reference/plotFilterValues.html">plotFilterValues</a></span>(d)</a></code></pre></div>
<p><img src="create_filter_files/figure-html/unnamed-chunk-5-1.png" width="700"></p>
<div class="sourceCode" id="cb5"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb5-1" data-line-number="1">iris.task.filtered =<span class="st"> </span><span class="kw"><a href="../../reference/filterFeatures.html">filterFeatures</a></span>(iris.task, <span class="dt">method =</span> <span class="st">"nonsense.filter"</span>, <span class="dt">abs =</span> <span class="dv">2</span>)</a>
<a class="sourceLine" id="cb5-2" data-line-number="2">iris.task.filtered</a>
<a class="sourceLine" id="cb5-3" data-line-number="3"><span class="co">## Supervised task: iris-example</span></a>
<a class="sourceLine" id="cb5-4" data-line-number="4"><span class="co">## Type: classif</span></a>
<a class="sourceLine" id="cb5-5" data-line-number="5"><span class="co">## Target: Species</span></a>
<a class="sourceLine" id="cb5-6" data-line-number="6"><span class="co">## Observations: 150</span></a>
<a class="sourceLine" id="cb5-7" data-line-number="7"><span class="co">## Features:</span></a>
<a class="sourceLine" id="cb5-8" data-line-number="8"><span class="co">## numerics factors ordered functionals </span></a>
<a class="sourceLine" id="cb5-9" data-line-number="9"><span class="co">## 2 0 0 0 </span></a>
<a class="sourceLine" id="cb5-10" data-line-number="10"><span class="co">## Missings: FALSE</span></a>
<a class="sourceLine" id="cb5-11" data-line-number="11"><span class="co">## Has weights: FALSE</span></a>
<a class="sourceLine" id="cb5-12" data-line-number="12"><span class="co">## Has blocking: FALSE</span></a>
<a class="sourceLine" id="cb5-13" data-line-number="13"><span class="co">## Has coordinates: FALSE</span></a>
<a class="sourceLine" id="cb5-14" data-line-number="14"><span class="co">## Classes: 3</span></a>
<a class="sourceLine" id="cb5-15" data-line-number="15"><span class="co">## setosa versicolor virginica </span></a>
<a class="sourceLine" id="cb5-16" data-line-number="16"><span class="co">## 50 50 50 </span></a>
<a class="sourceLine" id="cb5-17" data-line-number="17"><span class="co">## Positive class: NA</span></a>
<a class="sourceLine" id="cb5-18" data-line-number="18"></a>
<a class="sourceLine" id="cb5-19" data-line-number="19"><span class="kw"><a href="../../reference/getTaskFeatureNames.html">getTaskFeatureNames</a></span>(iris.task.filtered)</a>
<a class="sourceLine" id="cb5-20" data-line-number="20"><span class="co">## [1] "Petal.Length" "Petal.Width"</span></a></code></pre></div>
<p>You might also want to have a look at the <a href="https://github.com/mlr-org/mlr/blob/master/R/Filter.R#L95">source code</a> of the filter methods already integrated in <code>mlr</code> for some more complex and meaningful examples.</p>
</div>
</div>
</div>
<div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
<div id="tocnav">
<h2 class="hasAnchor">
<a href="#tocnav" class="anchor"></a>Contents</h2>
<ul class="nav nav-pills nav-stacked">
<li><a href="#filter-objects">Filter objects</a></li>
<li><a href="#writing-a-new-filter-method">Writing a new filter method</a></li>
</ul>
</div>
</div>
</div>
<footer><!--<div class="copyright">
<p>Developed by Bernd Bischl, Michel Lang, Lars Kotthoff, Julia Schiffner, Jakob Richter, Zachary Jones, Giuseppe Casalicchio, Mason Gallo, Patrick Schratz.</p>
</div>
<div class="pkgdown">
<p>Site built with <a href="http://pkgdown.r-lib.org/">pkgdown</a>.</p>
</div>
--></footer>
</div>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script><script type="text/javascript"> docsearch({
apiKey: 'e300ecafdf04fe1199e3339c825ce7d0',
indexName: 'mlr',
inputSelector: 'input#search-input.form-control',
debug: false // Set debug to true if you want to inspect the dropdown
});
</script>
</body>
</html>