注釈
このページは、 tutorials/machine_learning/02_qsvm_multiclass.ipynb から生成されました。
IBM Quantum lab でインタラクティブに実行します。
QSVM 多クラス分類¶
multiclass extension は、二値 (2クラス) 分類器と連携して動作し、クラス数が 2 より多い場合にも分類が行えるようにします。
現在、以下の多クラス拡張がサポートされています。
OneAgainstRest
AllPairs
ErrorCorrectingCode
これらは最終的な多クラス分類を実現するために、二値分類によって得られたデータをグループ化する上で、異なるテクニックを用いています。
[1]:
import numpy as np
from qiskit import BasicAer
from qiskit.circuit.library import ZZFeatureMap
from qiskit.aqua import QuantumInstance, aqua_globals
from qiskit.aqua.algorithms import QSVM
from qiskit.aqua.components.multiclass_extensions import AllPairs
from qiskit.aqua.utils.dataset_helper import get_feature_dimension
2 つ以上のクラスをもつデータセットが欲しいので、ここでは 3 つのクラスがある Wine
データセットを選びます。
[2]:
from qiskit.ml.datasets import wine
n = 2 # dimension of each data point
sample_Total, training_input, test_input, class_labels = wine(training_size=24,
test_size=6, n=n, plot_data=True)
temp = [test_input[k] for k in test_input]
total_array = np.concatenate(temp)

多クラス拡張を使用するには、 QSVM の作成時に multiclass_extension
パラメータを用いて、そのインスタンスを指定するだけです。下の例では AllPairs()
を使用していますが、以下のような多クラス拡張でも動作します。
OneAgainstRest()
ErrorCorrectingCode(code_size=5)
[3]:
aqua_globals.random_seed = 10598
backend = BasicAer.get_backend('qasm_simulator')
feature_map = ZZFeatureMap(feature_dimension=get_feature_dimension(training_input),
reps=2, entanglement='linear')
svm = QSVM(feature_map, training_input, test_input, total_array,
multiclass_extension=AllPairs())
quantum_instance = QuantumInstance(backend, shots=1024,
seed_simulator=aqua_globals.random_seed,
seed_transpiler=aqua_globals.random_seed)
result = svm.run(quantum_instance)
for k,v in result.items():
print(f'{k} : {v}')
testing_accuracy : 1.0
test_success_ratio : 1.0
predicted_labels : [0 1 2 2 2 2]
predicted_classes : ['A', 'B', 'C', 'C', 'C', 'C']
[4]:
import qiskit.tools.jupyter
%qiskit_version_table
%qiskit_copyright
Version Information
Qiskit Software | Version |
---|---|
Qiskit | 0.23.0 |
Terra | 0.16.0 |
Aer | 0.7.0 |
Ignis | 0.5.0 |
Aqua | 0.8.0 |
IBM Q Provider | 0.11.0 |
System information | |
Python | 3.6.1 |Continuum Analytics, Inc.| (default, May 11 2017, 13:09:58) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] |
OS | Linux |
CPUs | 1 |
Memory (Gb) | 5.827335357666016 |
Thu Nov 12 17:37:28 2020 EST |
This code is a part of Qiskit
© Copyright IBM 2017, 2020.
This code is licensed under the Apache License, Version 2.0. You may
obtain a copy of this license in the LICENSE.txt file in the root directory
of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
Any modifications or derivative works of this code must retain this
copyright notice, and modified files need to carry a notice indicating
that they have been altered from the originals.