def test_empty_kernel(self):
        """ Test QSVC with empty QuantumKernel """
        qkernel = QuantumKernel()
        qsvc = QSVC(quantum_kernel=qkernel)

        with self.assertRaises(QiskitMachineLearningError):
            _ = qsvc.fit(self.sample_train, self.label_train)
    def test_qsvc_parameters(self):
        """ Test QSVC with extra constructor parameters """
        qkernel = QuantumKernel(feature_map=self.feature_map,
                                quantum_instance=self.statevector_simulator)

        qsvc = QSVC(quantum_kernel=qkernel, tol=1e-4, C=0.5)
        qsvc.fit(self.sample_train, self.label_train)
        score = qsvc.score(self.sample_test, self.label_test)

        self.assertEqual(score, 0.5)
    def test_qsvc(self):
        """ Test QSVC """
        qkernel = QuantumKernel(feature_map=self.feature_map,
                                quantum_instance=self.statevector_simulator)

        qsvc = QSVC(quantum_kernel=qkernel)
        qsvc.fit(self.sample_train, self.label_train)
        score = qsvc.score(self.sample_test, self.label_test)

        self.assertEqual(score, 0.5)
예제 #4
0
    def test_save_load(self):
        """Tests save and load models."""
        features = np.array([[0, 0], [0.1, 0.2], [1, 1], [0.9, 0.8]])
        labels = np.array([0, 0, 1, 1])

        quantum_kernel = QuantumKernel(
            feature_map=ZZFeatureMap(2),
            quantum_instance=self.statevector_simulator)
        classifier = QSVC(quantum_kernel=quantum_kernel)
        classifier.fit(features, labels)

        # predicted labels from the newly trained model
        test_features = np.array([[0.2, 0.1], [0.8, 0.9]])
        original_predicts = classifier.predict(test_features)

        # save/load, change the quantum instance and check if predicted values are the same
        file_name = os.path.join(tempfile.gettempdir(), "qsvc.model")
        classifier.save(file_name)
        try:
            classifier_load = QSVC.load(file_name)
            loaded_model_predicts = classifier_load.predict(test_features)

            np.testing.assert_array_almost_equal(original_predicts,
                                                 loaded_model_predicts)

            # test loading warning
            class FakeModel(SerializableModelMixin):
                """Fake model class for test purposes."""

                pass

            with self.assertRaises(TypeError):
                FakeModel.load(file_name)

        finally:
            os.remove(file_name)
예제 #5
0
 def test_with_kernel_parameter(self):
     """Test QSVC with the `kernel` argument."""
     with self.assertWarns(QiskitMachineLearningWarning):
         QSVC(kernel=1)
예제 #6
0
 def test_qsvc_to_string(self):
     """Test QSVC print works when no *args passed in"""
     qsvc = QSVC()
     _ = str(qsvc)