qsvc
eigenkit.qml.qsvc
eigenkit.qml.qsvc.QSVC
Bases: BaseQuantumClassifier
Quantum support vector classifier (QSVC).
It computes a quantum kernel matrix from a fidelity circuit, and then uses
SVC(kernel="precomputed") from scikit-learn.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
feature_map
|
str
|
The feature map. It is |
'Angle'
|
reps
|
int
|
The number of repetitions of the feature map. Default: |
1
|
C
|
float
|
The regularisation parameter of the support vector machine. Default:
|
1.0
|
probability
|
bool
|
If True, the model gives Platt-scaled probabilities. If
False (the default), |
False
|
provider
|
ProviderSpec
|
The backend. It takes the same options as
|
'numpy'
|
random_state
|
int | None
|
The seed. |
42
|
kernel
|
QuantumKernel | None
|
A |
None
|
scale
|
float
|
The bandwidth. The inputs are multiplied by it before they reach
the kernel, so it can be tuned with |
1.0
|
Example
import numpy as np
from eigenkit import QSVC, Encoding, QuantumKernel, Variational
rng = np.random.default_rng(0)
X_train, X_test = rng.uniform(0, np.pi, (8, 4)), rng.uniform(0, np.pi, (3, 4))
y_train = np.array([0, 1] * 4)
model = QSVC(feature_map="AngleCNOT", reps=2)
model.fit(X_train, y_train)
predictions = model.predict(X_test)
# Any kernel works, including custom and trained ones.
my_map = [Encoding(in_features=4), Variational(depth=1)]
model = QSVC(kernel=QuantumKernel(n_features=4, feature_map=my_map))
decision_function(X)
Return the signed distance of each sample to the separating hyperplane.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
X
|
ndarray
|
The samples, of shape |
required |
Returns:
| Type | Description |
|---|---|
ndarray
|
An array of shape |
fit(X, y)
Fit the classifier on training data.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
X
|
ndarray
|
The samples, of shape |
required |
y
|
ndarray
|
The class labels, of shape |
required |
Returns:
| Type | Description |
|---|---|
QSVC
|
This estimator, so that calls can be chained. |
load(path, *, provider=None)
classmethod
Load a fitted model from a .eigenkit bundle.
Load only bundles that you trust. A bundle can contain joblib pickles, and
unpickling runs code, as with torch.load or joblib.load.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
path
|
str | Path
|
The path of the bundle. |
required |
provider
|
ProviderSpec | None
|
A provider that replaces the saved one. |
None
|
Returns:
| Type | Description |
|---|---|
'BaseQuantumEstimator'
|
The loaded estimator. |
Raises:
| Type | Description |
|---|---|
TypeError
|
If the method is called on a subclass and the bundle holds
a different class. |
predict(X)
Predict the class labels of X.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
X
|
ndarray
|
The samples, of shape |
required |
Returns:
| Type | Description |
|---|---|
ndarray
|
One prediction for each sample. |
predict_proba(X)
Predict the probability of each class. It requires probability=True.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
X
|
ndarray
|
The samples, of shape |
required |
Returns:
| Type | Description |
|---|---|
ndarray
|
The probabilities, of shape |
Raises:
| Type | Description |
|---|---|
ValueError
|
If the model was created with |
save(path)
Save a fitted model to a .eigenkit bundle.
The bundles of models that hold scikit-learn objects (QSVC, QSVR, the
reservoir estimators and the time-series estimators) contain joblib
pickles, so loading one can run code. Share them only with people who
trust you.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
path
|
str | Path
|
The path of the bundle. The suffix |
required |