source: orange/docs/reference/rst/Orange.classification.rst @ 9735:061a2357d694

Revision 9735:061a2357d694, 3.5 KB checked in by Jure Zbontar <jure.zbontar@…>, 2 years ago (diff)

Finished porting classifiers in python.

Line 
1.. automodule:: Orange.classification
2
3###################################
4Classification (``classification``)
5###################################
6
7All classifiers in Orange consist of two parts, a Learner and a Classifier. A
8learner is constructed with all parameters that will be used for learning.
9When a data table is passed to its __call__ method, a model is fitted to the
10data and return in a form of a Classifier, which is then used for predicting
11the dependent variable(s) of new instances.
12
13.. class:: Learner()
14
15    Base class for all orange learners.
16
17    .. method:: __call__(instances)
18
19        Fit a model and return it as an instance of :class:`Classifier`.
20
21        This method is abstract and needs to be implemented on each learner.
22
23.. class:: Classifier()
24
25    Base class for all orange classifiers.
26
27    .. attribute:: GetValue
28
29        Return value of the target class when performing prediction.
30
31    .. attribute:: GetProbabilities
32
33        Return probability of each target class when performing prediction.
34
35    .. attribute:: GetBoth
36
37        Return a tuple of target class value and probabilities for each class.
38
39
40    .. method:: __call__(instances, return_type)
41
42        Classify a new instance using this model.
43
44        This method is abstract and needs to be implemented on each classifier.
45
46        :param instance: data instance to be classified.
47        :type instance: :class:`~Orange.data.Instance`
48
49        :param return_type: what needs to be predicted
50        :type return_type: :obj:`GetBoth`,
51                           :obj:`GetValue`,
52                           :obj:`GetProbabilities`
53
54        :rtype: :class:`~Orange.data.Value`,
55              :class:`~Orange.statistics.distribution.Distribution` or a
56              tuple with both
57
58You can often program learners and classifiers as classes or functions written
59entirely in Python and independent from Orange. Such classes can participate,
60for instance, in the common evaluation functions like those available in
61modules :obj:`Orange.evaluation.testing` and :obj:`Orange.evaluation.scoring`.
62
63On the other hand, these classes can't be used as components for pure C++
64classes. For instance, :obj:`Orange.classification.tree.TreeLearner`'s
65attribute nodeLearner should contain a (wrapped) C++ object derived from
66:obj:`Learner`, such as :obj:`Orange.classification.majority.MajorityLearner`
67or :obj:`Orange.classification.bayes.NaiveLearner`. They cannot accommodate
68Python's classes or even functions.
69
70There's a workaround, though. You can subtype Orange classes :obj:`Learner` or
71:obj:`Classifier` as if the two classes were defined in Python, but later use your
72derived Python classes as if they were written in Orange's core. That is, you
73can define your class in a Python script like this::
74
75    class MyLearner(Orange.classifier.Learner):
76        def __call__(self, examples, weightID = 0):
77            <do something smart here>
78
79Such a learner can then be used as any regular learner written in
80Orange. You can, for instance, construct a tree learner and use your
81learner to learn node classifier::
82
83    treeLearner = Orange.classification.tree.TreeLearner()
84    treeLearner.nodeLearner = MyLearner()
85
86-----
87
88Orange contains implementations of various classifiers that are described in
89detail on separate pages.
90
91.. toctree::
92   :maxdepth: 2
93
94   Orange.classification.bayes
95   Orange.classification.knn
96   Orange.classification.logreg
97   Orange.classification.lookup
98   Orange.classification.majority
99   Orange.classification.rules
100   Orange.classification.svm
101   Orange.classification.tree
Note: See TracBrowser for help on using the repository browser.