Japanese
言語
English
Japanese
German
Korean
Portuguese, Brazilian
French
Shortcuts

注釈

このページは、 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)
../../_images/tutorials_machine_learning_02_qsvm_multiclass_3_0.png

多クラス拡張を使用するには、 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 SoftwareVersion
Qiskit0.23.0
Terra0.16.0
Aer0.7.0
Ignis0.5.0
Aqua0.8.0
IBM Q Provider0.11.0
System information
Python3.6.1 |Continuum Analytics, Inc.| (default, May 11 2017, 13:09:58) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]
OSLinux
CPUs1
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.