All supervised algorithms inherit from the Supervised class which, in turn, is inherited from the ML_Algorithm class. The Supervised class extends the ML_Algorithm class by optionally taking in a Labeling or model parameter. If a Labeling is passed in, the Supervised algorithm operates in a 'learn' mode, in which it will attempt to create a model which fits the labeling when its run() method is invoked.
If a model is passed in, the algorithm operates in a 'predict' mode, in which it will classify data points into their appropriate classes during the execution of the run() method.