def __init__(self, training_dataset, test_dataset=None, datapoints=None, gamma=None, multiclass_extension=None): self.validate(locals()) super().__init__() if training_dataset is None: raise AquaError('Training dataset must be provided.') is_multiclass = get_num_classes(training_dataset) > 2 if is_multiclass: if multiclass_extension is None: raise AquaError( 'Dataset has more than two classes. A multiclass extension must be provided.' ) else: if multiclass_extension is not None: logger.warning( "Dataset has just two classes. Supplied multiclass extension will be ignored" ) if multiclass_extension is None: svm_instance = _SVM_Classical_Binary(training_dataset, test_dataset, datapoints, gamma) else: svm_instance = _SVM_Classical_Multiclass(training_dataset, test_dataset, datapoints, gamma, multiclass_extension) self.instance = svm_instance
def __init__( self, training_dataset: Dict[str, np.ndarray], test_dataset: Optional[Dict[str, np.ndarray]] = None, datapoints: Optional[np.ndarray] = None, gamma: Optional[int] = None, multiclass_extension: Optional[MulticlassExtension] = None ) -> None: # pylint: disable=line-too-long """ Args: training_dataset: Training dataset. test_dataset: Testing dataset. datapoints: Prediction dataset. gamma: Used as input for sklearn rbf_kernel which is used internally. See `sklearn.metrics.pairwise.rbf_kernel <https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.rbf_kernel.html>`_ for more information about gamma. multiclass_extension: If number of classes is greater than 2 then a multiclass scheme must be supplied, in the form of a multiclass extension. Raises: AquaError: Multiclass extension not supplied when number of classes > 2 """ super().__init__() warn_package('aqua.algorithms.classifiers', 'qiskit_machine_learning.algorithms.classifiers', 'qiskit-machine-learning') if training_dataset is None: raise AquaError('Training dataset must be provided.') is_multiclass = get_num_classes(training_dataset) > 2 if is_multiclass: if multiclass_extension is None: raise AquaError('Dataset has more than two classes. ' 'A multiclass extension must be provided.') else: if multiclass_extension is not None: logger.warning( "Dataset has just two classes. Supplied multiclass " "extension will be ignored") svm_instance = None # type: Optional[Union[_SklearnSVMBinary, _SklearnSVMMulticlass]] if multiclass_extension is None: svm_instance = _SklearnSVMBinary(training_dataset, test_dataset, datapoints, gamma) else: multiclass_extension.set_estimator(_RBF_SVC_Estimator, []) svm_instance = _SklearnSVMMulticlass(training_dataset, test_dataset, datapoints, gamma, multiclass_extension) self.instance = svm_instance
def __init__( self, training_dataset: Dict[str, np.ndarray], test_dataset: Optional[Dict[str, np.ndarray]] = None, datapoints: Optional[np.ndarray] = None, gamma: Optional[int] = None, multiclass_extension: Optional[MulticlassExtension] = None ) -> None: # pylint: disable=line-too-long """ Args: training_dataset: training dataset. test_dataset: testing dataset. datapoints: prediction dataset. gamma: Used as input for sklearn rbf_kernel internally. See `sklearn.metrics.pairwise.rbf_kernel <https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.rbf_kernel.html>`_ for more information about gamma. multiclass_extension: if number of classes > 2 then a multiclass scheme is needed. Raises: AquaError: If using binary classifier where num classes >= 3 """ super().__init__() if training_dataset is None: raise AquaError('Training dataset must be provided.') is_multiclass = get_num_classes(training_dataset) > 2 if is_multiclass: if multiclass_extension is None: raise AquaError('Dataset has more than two classes. ' 'A multiclass extension must be provided.') else: if multiclass_extension is not None: logger.warning( "Dataset has just two classes. Supplied multiclass " "extension will be ignored") if multiclass_extension is None: svm_instance = _SVM_Classical_Binary(training_dataset, test_dataset, datapoints, gamma) else: svm_instance = _SVM_Classical_Multiclass(training_dataset, test_dataset, datapoints, gamma, multiclass_extension) self.instance = svm_instance