qiskit.aqua.algorithms.QSVM¶

class
QSVM
(feature_map, training_dataset=None, test_dataset=None, datapoints=None, multiclass_extension=None, lambda2=0.001, quantum_instance=None)[ソース]¶ Quantum SVM algorithm.
A key concept in classification methods is that of a kernel. Data cannot typically be separated by a hyperplane in its original space. A common technique used to find such a hyperplane consists on applying a nonlinear transformation function to the data. This function is called a feature map, as it transforms the raw features, or measurable properties, of the phenomenon or subject under study. Classifying in this new feature space – and, as a matter of fact, also in any other space, including the raw original one – is nothing more than seeing how close data points are to each other. This is the same as computing the inner product for each pair of data in the set. In fact we do not need to compute the nonlinear feature map for each datum, but only the inner product of each pair of data points in the new feature space. This collection of inner products is called the kernel and it is perfectly possible to have feature maps that are hard to compute but whose kernels are not.
The QSVM algorithm applies to classification problems that require a feature map for which computing the kernel is not efficient classically. This means that the required computational resources are expected to scale exponentially with the size of the problem. QSVM uses a Quantum processor to solve this problem by a direct estimation of the kernel in the feature space. The method used falls in the category of what is called supervised learning, consisting of a training phase (where the kernel is calculated and the support vectors obtained) and a test or classification phase (where new data without labels is classified according to the solution found in the training phase).
Internally, QSVM will run the binary classification or multiclass classification based on how many classes the data has. If the data has more than 2 classes then a multiclass_extension is required to be supplied. Aqua provides several
multiclass_extensions
.See also https://arxiv.org/abs/1804.11326
 パラメータ
feature_map (
Union
[QuantumCircuit
,FeatureMap
]) – Feature map module, used to transform datatraining_dataset (
Optional
[Dict
[str
,ndarray
]]) – Training dataset.test_dataset (
Optional
[Dict
[str
,ndarray
]]) – Testing dataset.datapoints (
Optional
[ndarray
]) – Prediction dataset.multiclass_extension (
Optional
[MulticlassExtension
]) – If number of classes is greater than 2 then a multiclass scheme must be supplied, in the form of a multiclass extension.lambda2 (
float
) – L2 norm regularization factorquantum_instance (
Union
[QuantumInstance
,Backend
,BaseBackend
,None
]) – Quantum Instance or Backend
 例外
AquaError – Multiclass extension not supplied when number of classes > 2

__init__
(feature_map, training_dataset=None, test_dataset=None, datapoints=None, multiclass_extension=None, lambda2=0.001, quantum_instance=None)[ソース]¶  パラメータ
feature_map (
Union
[QuantumCircuit
,FeatureMap
]) – Feature map module, used to transform datatraining_dataset (
Optional
[Dict
[str
,ndarray
]]) – Training dataset.test_dataset (
Optional
[Dict
[str
,ndarray
]]) – Testing dataset.datapoints (
Optional
[ndarray
]) – Prediction dataset.multiclass_extension (
Optional
[MulticlassExtension
]) – If number of classes is greater than 2 then a multiclass scheme must be supplied, in the form of a multiclass extension.lambda2 (
float
) – L2 norm regularization factorquantum_instance (
Union
[QuantumInstance
,Backend
,BaseBackend
,None
]) – Quantum Instance or Backend
 例外
AquaError – Multiclass extension not supplied when number of classes > 2
Methods
__init__
(feature_map[, training_dataset, …]) type feature_map
Union
[QuantumCircuit
,FeatureMap
]
construct_circuit
(x1, x2[, measurement])Generate inner product of x1 and x2 with the given feature map.
construct_kernel_matrix
(x1_vec[, x2_vec, …])Construct kernel matrix, if x2_vec is None, selfinnerproduct is conducted.
get_kernel_matrix
(quantum_instance, …[, …])Construct kernel matrix, if x2_vec is None, selfinnerproduct is conducted.
load_model
(file_path)Load a model from a file path.
predict
(data[, quantum_instance])Predict using the svm.
run
([quantum_instance])Execute the algorithm with selected backend.
save_model
(file_path)Save the model to a file path.
set_backend
(backend, **kwargs)Sets backend with configuration.
setup_datapoint
(datapoints)Setup data points, if the data were there, they would be overwritten.
setup_test_data
(test_dataset)Setup test data, if the data were there, they would be overwritten.
setup_training_data
(training_dataset)Setup training data, if the data were there, they would be overwritten.
test
(data, labels[, quantum_instance])Test the svm.
train
(data, labels[, quantum_instance])Train the svm.
Attributes
BATCH_SIZE
Returns backend.
Returns quantum instance.
Return a numpy random.
returns result

property
backend
¶ Returns backend.
 戻り値の型
Union
[Backend
,BaseBackend
]

construct_circuit
(x1, x2, measurement=False)[ソース]¶ Generate inner product of x1 and x2 with the given feature map.
The dimension of x1 and x2 must be the same.
 パラメータ
x1 (numpy.ndarray) – data points, 1D array, dimension is D
x2 (numpy.ndarray) – data points, 1D array, dimension is D
measurement (bool) – add measurement gates at the end
 戻り値
constructed circuit
 戻り値の型

construct_kernel_matrix
(x1_vec, x2_vec=None, quantum_instance=None)[ソース]¶ Construct kernel matrix, if x2_vec is None, selfinnerproduct is conducted.
メモ
When using statevector_simulator, we only build the circuits for Psi(x1)0> rather than Psi(x2)^dagger Psi(x1)0>, and then we perform the inner product classically. That is, for statevector_simulator, the total number of circuits will be O(N) rather than O(N^2) for qasm_simulator.
 パラメータ
x1_vec (numpy.ndarray) – data points, 2D array, N1xD, where N1 is the number of data, D is the feature dimension
x2_vec (numpy.ndarray) – data points, 2D array, N2xD, where N2 is the number of data, D is the feature dimension
quantum_instance (QuantumInstance) – quantum backend with all settings
 戻り値
2D matrix, N1xN2
 戻り値の型
numpy.ndarray
 例外
AquaError – Quantum instance is not present.

static
get_kernel_matrix
(quantum_instance, feature_map, x1_vec, x2_vec=None, enforce_psd=True)[ソース]¶ Construct kernel matrix, if x2_vec is None, selfinnerproduct is conducted.
メモ
When using statevector_simulator, we only build the circuits for Psi(x1)0> rather than Psi(x2)^dagger Psi(x1)0>, and then we perform the inner product classically. That is, for statevector_simulator, the total number of circuits will be O(N) rather than O(N^2) for qasm_simulator.
 パラメータ
quantum_instance (QuantumInstance) – quantum backend with all settings
feature_map (FeatureMap) – a feature map that maps data to feature space
x1_vec (numpy.ndarray) – data points, 2D array, N1xD, where N1 is the number of data, D is the feature dimension
x2_vec (numpy.ndarray) – data points, 2D array, N2xD, where N2 is the number of data, D is the feature dimension
enforce_psd (bool) – enforces that the kernel matrix is positive semidefinite by setting negative eigenvalues to zero. This is only applied in the symmetric case, i.e., if x2_vec == None.
 戻り値
2D matrix, N1xN2
 戻り値の型
numpy.ndarray

load_model
(file_path)[ソース]¶ Load a model from a file path.
 パラメータ
file_path (str) – the path of the saved model.

predict
(data, quantum_instance=None)[ソース]¶ Predict using the svm.
 パラメータ
data (numpy.ndarray) – NxD array, where N is the number of data, D is the feature dimension.
quantum_instance (QuantumInstance) – quantum backend with all setting
 戻り値
predicted labels, Nx1 array
 戻り値の型
numpy.ndarray
 例外
AquaError – Quantum instance is not present.

property
quantum_instance
¶ Returns quantum instance.
 戻り値の型
Optional
[QuantumInstance
]

property
random
¶ Return a numpy random.

property
ret
¶ returns result

run
(quantum_instance=None, **kwargs)¶ Execute the algorithm with selected backend.
 パラメータ
quantum_instance (
Union
[QuantumInstance
,Backend
,BaseBackend
,None
]) – the experimental setting.kwargs (dict) – kwargs
 戻り値
results of an algorithm.
 戻り値の型
dict
 例外
AquaError – If a quantum instance or backend has not been provided

save_model
(file_path)[ソース]¶ Save the model to a file path.
 パラメータ
file_path (str) – a path to save the model.

set_backend
(backend, **kwargs)¶ Sets backend with configuration.
 戻り値の型
None

setup_datapoint
(datapoints)[ソース]¶ Setup data points, if the data were there, they would be overwritten.
 パラメータ
datapoints (numpy.ndarray) – prediction dataset.

setup_test_data
(test_dataset)[ソース]¶ Setup test data, if the data were there, they would be overwritten.
 パラメータ
test_dataset (dict) – test dataset.

setup_training_data
(training_dataset)[ソース]¶ Setup training data, if the data were there, they would be overwritten.
 パラメータ
training_dataset (dict) – training dataset.

test
(data, labels, quantum_instance=None)[ソース]¶ Test the svm.
 パラメータ
data (numpy.ndarray) – NxD array, where N is the number of data, D is the feature dimension.
labels (numpy.ndarray) – Nx1 array, where N is the number of data
quantum_instance (QuantumInstance) – quantum backend with all setting
 戻り値
accuracy
 戻り値の型
float
 例外
AquaError – Quantum instance is not present.

train
(data, labels, quantum_instance=None)[ソース]¶ Train the svm.
 パラメータ
data (numpy.ndarray) – NxD array, where N is the number of data, D is the feature dimension.
labels (numpy.ndarray) – Nx1 array, where N is the number of data
quantum_instance (QuantumInstance) – quantum backend with all setting
 例外
AquaError – Quantum instance is not present.