Operator Reference

learn_class_boxT_learn_class_boxLearnClassBoxLearnClassBoxlearn_class_box (Operator)

learn_class_boxT_learn_class_boxLearnClassBoxLearnClassBoxlearn_class_box — Train the classifier.

Warning

learn_class_boxlearn_class_boxLearnClassBoxLearnClassBoxlearn_class_box is obsolete and is only provided for reasons of backward compatibility. New applications should use the MLP, SVM, KNN or GMM operators instead. The operator will be removed with HALCON 25.11.

Signature

learn_class_box( : : ClassifHandle, Features, Class : )

Herror T_learn_class_box(const Htuple ClassifHandle, const Htuple Features, const Htuple Class)

void LearnClassBox(const HTuple& ClassifHandle, const HTuple& Features, const HTuple& Class)

void HClassBox::LearnClassBox(const HTuple& Features, Hlong Class) const

static void HOperatorSet.LearnClassBox(HTuple classifHandle, HTuple features, HTuple classVal)

void HClassBox.LearnClassBox(HTuple features, int classVal)

def learn_class_box(classif_handle: HHandle, features: Sequence[Union[int, float, str]], class_val: int) -> None

Description

FeaturesFeaturesFeaturesfeaturesfeatures is a tuple of any floating point numbers or integers (attributes) which has to be assigned to the class ClassClassClassclassValclass. This class is specified by an integer. You may use the operator enquire_class_boxenquire_class_boxEnquireClassBoxEnquireClassBoxenquire_class_box later to find the most probable class for any array (=tuple). The algorithm tries to describe the set of arrays of one class by hyper cuboids in the feature space. On demand you may even create several cuboids per class. Hence it is possible to learn disjunct concepts, too. I.e such concepts which split in several “cluster” of points in the feature space. The data structure is hidden to the user and only accessible with such operators which are described in this chapter.

Note that if a class consists of disjunct sub-classes that would lead to a splitting of the respective hyper cuboid, the training samples should be in random order with respect to the sub-classes. Otherwise, the splitting of the hyper cuboid will be sub-optimal.

It is possible to specify attributes as unknown by indicating the symbol '*' instead of a number. If you specify n values, then all following values, i.e. the attributes n+1 until 'max', are automatically supposed to be undefined.

You may call the operators learn_class_boxlearn_class_boxLearnClassBoxLearnClassBoxlearn_class_box and enquire_class_boxenquire_class_boxEnquireClassBoxEnquireClassBoxenquire_class_box alternately, so that it is possible to classify already in the phase of learning. By this means you could see when a satisfying behavior had been reached.

The classifier is going to be bigger using further training. This means, that it is not advisable to continue training after reaching a satisfactory behavior.

Execution Information

  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).
  • Multithreading scope: global (may be called from any thread).
  • Processed without parallelization.

This operator modifies the state of the following input parameter:

During execution of this operator, access to the value of this parameter must be synchronized if it is used across multiple threads.

Parameters

ClassifHandleClassifHandleClassifHandleclassifHandleclassif_handle (input_control, state is modified)  class_box HClassBox, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle of the classifier.

FeaturesFeaturesFeaturesfeaturesfeatures (input_control)  number-array HTupleSequence[Union[int, float, str]]HTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)

Array of attributes to learn.

Default: [1.0,1.5,2.0]

ClassClassClassclassValclass (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Class to which the array has to be assigned.

Default: 1

Result

learn_class_boxlearn_class_boxLearnClassBoxLearnClassBoxlearn_class_box returns 2 ( H_MSG_TRUE) for a normal case. An exception is raised if there are memory allocation problems. The number of classes is constrained. If this limit is passed, an exception is raised, too.

Possible Predecessors

create_class_boxcreate_class_boxCreateClassBoxCreateClassBoxcreate_class_box, enquire_class_boxenquire_class_boxEnquireClassBoxEnquireClassBoxenquire_class_box

Possible Successors

test_sampset_boxtest_sampset_boxTestSampsetBoxTestSampsetBoxtest_sampset_box, enquire_class_boxenquire_class_boxEnquireClassBoxEnquireClassBoxenquire_class_box, write_class_boxwrite_class_boxWriteClassBoxWriteClassBoxwrite_class_box, close_class_boxclose_class_boxCloseClassBoxCloseClassBoxclose_class_box, clear_sampsetclear_sampsetClearSampsetClearSampsetclear_sampset

See also

test_sampset_boxtest_sampset_boxTestSampsetBoxTestSampsetBoxtest_sampset_box, close_class_boxclose_class_boxCloseClassBoxCloseClassBoxclose_class_box, create_class_boxcreate_class_boxCreateClassBoxCreateClassBoxcreate_class_box, enquire_class_boxenquire_class_boxEnquireClassBoxEnquireClassBoxenquire_class_box, learn_sampset_boxlearn_sampset_boxLearnSampsetBoxLearnSampsetBoxlearn_sampset_box

Module

Foundation