pyqpanda_alg.QSVM.quantum_kernel_svm
¶
Module Contents¶
Classes¶
A help class to create Quantum Kernal Matrix.The evaluate function can be used in |
- class pyqpanda_alg.QSVM.quantum_kernel_svm.QuantumKernel_vqnet(batch_size: int = 100, n_qbits=None)¶
A help class to create Quantum Kernal Matrix.The evaluate function can be used in
sklearn.svm
.- Parameters
batch_size:
int
Data number to build quantum kernel, default: 100.
n_qbits:
int
number of quantum bits.
- evaluate(x_vec: numpy.ndarray, y_vec: numpy.ndarray = None) numpy.ndarray ¶
Evaluation function to build quantum kernel.
- Parameters
x_vec:
ndarray
Train or test dataset features.
y_vec:
ndarray
Train or test dataset labels.
- Returns
out:
ndarray
Kernal matrix.
- Examples
import os import numpy as np import pyqpanda as pq from sklearn.svm import SVC import matplotlib try: matplotlib.use('TkAgg') except: pass import matplotlib.pyplot as plt from pyqpanda_alg.QSVM.quantum_kernel_svm import QuantumKernel_vqnet from pyqpanda_alg import QSVM data_path = QSVM.__path__[0] def _read_vqc_qsvm_data(path): train_features = np.loadtxt(os.path.join(path, "dataset/qsvm_train_features.txt")) test_features = np.loadtxt(os.path.join(path, "dataset/qsvm_test_features.txt")) train_labels = np.loadtxt(os.path.join(path, "dataset/qsvm_train_labels.txt")) test_labels = np.loadtxt(os.path.join(path, "dataset/qsvm_test_labels.txt")) samples = np.loadtxt(os.path.join(path, "dataset/qsvm_samples.txt")) return train_features, test_features, train_labels, test_labels, samples def qsvm_classification(): train_features, test_features, train_labels, test_labels, samples = _read_vqc_qsvm_data(data_path) plt.figure(figsize=(5, 5)) plt.ylim(0, 2 * np.pi) plt.xlim(0, 2 * np.pi) plt.imshow( np.asmatrix(samples).T, interpolation="nearest", origin="lower", cmap="RdBu", extent=[0, 2 * np.pi, 0, 2 * np.pi], ) plt.scatter( train_features[np.where(train_labels[:] == 0), 0], train_features[np.where(train_labels[:] == 0), 1], marker="s", facecolors="w", edgecolors="b", label="A train", ) plt.scatter( train_features[np.where(train_labels[:] == 1), 0], train_features[np.where(train_labels[:] == 1), 1], marker="o", facecolors="w", edgecolors="r", label="B train", ) plt.scatter( test_features[np.where(test_labels[:] == 0), 0], test_features[np.where(test_labels[:] == 0), 1], marker="s", facecolors="b", edgecolors="w", label="A test", ) plt.scatter( test_features[np.where(test_labels[:] == 1), 0], test_features[np.where(test_labels[:] == 1), 1], marker="o", facecolors="r", edgecolors="w", label="B test", ) plt.legend(bbox_to_anchor=(1.05, 1), loc="upper left", borderaxespad=0.0) plt.title("samples dataset for classification") plt.show() samples_datasets_kernel = QuantumKernel_vqnet(n_qbits=2) samples_datasets_svc = SVC(kernel=samples_datasets_kernel.evaluate) samples_datasets_svc.fit(train_features, train_labels) samples_datasets_score = samples_datasets_svc.score(test_features, test_labels) print(f"Callable kernel classification test score: {samples_datasets_score}") samples_datasets_matrix_train = samples_datasets_kernel.evaluate(x_vec=train_features) samples_datasets_matrix_test = samples_datasets_kernel.evaluate(x_vec=test_features, y_vec=train_features) fig, axs = plt.subplots(1, 2, figsize=(10, 5)) axs[0].imshow( np.asmatrix(samples_datasets_matrix_train), interpolation="nearest", origin="upper", cmap="Blues" ) axs[0].set_title("samples training kernel matrix") axs[1].imshow(np.asmatrix(samples_datasets_matrix_test), interpolation="nearest", origin="upper", cmap="Reds") axs[1].set_title("samples testing kernel matrix") plt.show() if __name__ == "__main__": qsvm_classification()