Variational Quantum Classifier (VQC) implementation.
VQC is a quantum machine learning algorithm that uses parameterized quantum circuits to perform classification tasks. It combines feature maps for encoding classical data with variational ansatzes optimized to maximize classification accuracy.
Key Features:
Algorithm Flow:
This implementation is designed for production use with real quantum hardware.
Variational Quantum Classifier (VQC) implementation. VQC is a quantum machine learning algorithm that uses parameterized quantum circuits to perform classification tasks. It combines feature maps for encoding classical data with variational ansatzes optimized to maximize classification accuracy. Key Features: - Multiple feature map types (angle, amplitude, basis, IQP) - Integration with existing ansatz types from QClojure - Classification-specific objective functions and metrics - Support for binary and multi-class classification - Comprehensive analysis including confusion matrix and decision boundaries Algorithm Flow: 1. Encode classical features using quantum feature maps 2. Apply parameterized ansatz circuit 3. Measure classification outputs 4. Optimize parameters to maximize classification accuracy 5. Analyze results and performance metrics This implementation is designed for production use with real quantum hardware.
(calculate-classification-metrics predicted-labels true-labels num-classes)Calculate comprehensive classification metrics from predictions and true labels.
Parameters:
Returns: Map with accuracy, confusion matrix, precision, recall, and F1-score
Calculate comprehensive classification metrics from predictions and true labels. Parameters: - predicted-labels: Vector of predicted class labels - true-labels: Vector of true class labels - num-classes: Number of classes Returns: Map with accuracy, confusion matrix, precision, recall, and F1-score
(create-feature-map feature-map-type num-features num-qubits options)Create a feature map function for encoding classical data into quantum states.
Feature maps are crucial for VQC as they determine how classical data is encoded into quantum states. Different feature map types are suitable for different data characteristics and classification tasks.
Parameters:
Returns: Function that takes (feature-vector, circuit) and returns encoded circuit
Examples: ;; Angle encoding for continuous features (create-feature-map :angle 4 4 {:gate-type :ry})
;; Amplitude encoding for normalized features (create-feature-map :amplitude 4 2 {})
;; IQP encoding for complex feature interactions (create-feature-map :iqp 4 2 {})
Create a feature map function for encoding classical data into quantum states.
Feature maps are crucial for VQC as they determine how classical data is encoded
into quantum states. Different feature map types are suitable for different
data characteristics and classification tasks.
Parameters:
- feature-map-type: Type of feature map (:angle, :amplitude, :basis, :iqp, :custom)
- num-features: Number of features in the input data
- num-qubits: Number of qubits available for feature encoding
- options: Additional options specific to the feature map type
Returns:
Function that takes (feature-vector, circuit) and returns encoded circuit
Examples:
;; Angle encoding for continuous features
(create-feature-map :angle 4 4 {:gate-type :ry})
;; Amplitude encoding for normalized features
(create-feature-map :amplitude 4 2 {})
;; IQP encoding for complex feature interactions
(create-feature-map :iqp 4 2 {})(extract-classification-from-measurements measurement-result num-classes shots)Extract classification predictions from measurement frequency data.
This function converts measurement results to classification predictions.
Parameters:
Returns: Map with classification probabilities and predicted label
Extract classification predictions from measurement frequency data. This function converts measurement results to classification predictions. Parameters: - measurement-result: measurement result map with :frequencies and :measurement-outcomes - num-classes: Number of classification classes - shots: Total number of measurement shots Returns: Map with classification probabilities and predicted label
(variational-quantum-classifier backend options)Train a Variational Quantum Classifier (VQC) using the enhanced variational algorithm template.
This function configures and executes quantum classifier training with the following architecture:
The training process:
Parameters:
Required options:
Optional options (with defaults):
Returns: Map containing trained model and analysis results:
Example:
(variational-quantum-classifier
backend
{:training-data {:features [[0.1 0.2] [0.8 0.9]]
:labels [0 1]}
:num-features 2
:num-classes 2
:feature-map-type :angle
:ansatz-type :hardware-efficient
:num-layers 2
:optimization-method :cmaes
:max-iterations 50
:shots 1024})
Train a Variational Quantum Classifier (VQC) using the enhanced variational algorithm template.
This function configures and executes quantum classifier training with the following architecture:
- Feature mapping layer (encode classical data into quantum states)
- Parameterized ansatz layers (trainable quantum circuit)
- Measurement layer (extract classification predictions)
The training process:
1. Encodes training features into quantum states
2. Applies parameterized quantum circuits
3. Measures results and extracts class predictions
4. Optimizes circuit parameters to minimize classification loss
Parameters:
- backend: Quantum backend for circuit execution
- options: Configuration map with required and optional keys
Required options:
- :training-data - Map with :features and :labels vectors
- :num-features - Number of input features per sample
- :num-classes - Number of classification classes
Optional options (with defaults):
- :feature-map-type - Type of feature encoding (:angle, :amplitude, :iqp) [default: :angle]
- :ansatz-type - Type of parameterized circuit (:hardware-efficient, :real-amplitudes) [default: :hardware-efficient]
- :num-layers - Number of ansatz repetitions [default: 2]
- :loss-type - Loss function type (:accuracy, :cross-entropy, :hinge) [default: :accuracy]
- :optimization-method - Optimizer to use (:adam, :cmaes, :nelder-mead) [default: :cmaes]
- :max-iterations - Maximum training iterations [default: 50]
- :shots - Number of measurement shots [default: 1024]
Returns:
Map containing trained model and analysis results:
- :success - Training completion status
- :optimal-parameters - Trained circuit parameters
- :training-accuracy - Final training accuracy
- :confusion-matrix - Classification confusion matrix
- :class-probabilities - Per-class prediction probabilities
- :iterations - Number of iterations performed
- :convergence-history - Loss values over iterations
- :total-runtime-ms - Total training time
Example:
```clojure
(variational-quantum-classifier
backend
{:training-data {:features [[0.1 0.2] [0.8 0.9]]
:labels [0 1]}
:num-features 2
:num-classes 2
:feature-map-type :angle
:ansatz-type :hardware-efficient
:num-layers 2
:optimization-method :cmaes
:max-iterations 50
:shots 1024})(vqc-circuit-constructor config)Create circuit constructor function for VQC from configuration.
This function creates a circuit constructor that combines feature encoding with a variational ansatz. The resulting function takes parameters and a feature vector, returning a complete VQC circuit.
Parameters:
Returns: Function that takes (parameters, feature-vector) and returns a quantum circuit
Create circuit constructor function for VQC from configuration. This function creates a circuit constructor that combines feature encoding with a variational ansatz. The resulting function takes parameters and a feature vector, returning a complete VQC circuit. Parameters: - config: VQC configuration map with ansatz and feature map settings Returns: Function that takes (parameters, feature-vector) and returns a quantum circuit
(vqc-data-constructor config)Extract training data from VQC configuration for the variational algorithm template.
This function adapts the VQC data format to work with the variational algorithm template, which expects a single data source rather than separate training data.
Parameters:
Returns: Training data map with features and labels
Extract training data from VQC configuration for the variational algorithm template. This function adapts the VQC data format to work with the variational algorithm template, which expects a single data source rather than separate training data. Parameters: - config: VQC configuration map containing :training-data Returns: Training data map with features and labels
(vqc-loss-function loss-type)Create a loss function for VQC classification that works with the enhanced template.
This function computes classification loss based on predictions and true labels. It supports cross-entropy and hinge loss for binary and multi-class classification.
Parameters:
Returns: Function that takes (predictions, labels) and returns loss value
Create a loss function for VQC classification that works with the enhanced template. This function computes classification loss based on predictions and true labels. It supports cross-entropy and hinge loss for binary and multi-class classification. Parameters: - loss-type: Type of loss function (:cross-entropy, :hinge, :accuracy) Returns: Function that takes (predictions, labels) and returns loss value
(vqc-measurement-objective training-data
circuit-construction-fn
backend
execution-options
num-classes)Create a VQC objective function using hardware-compatible measurement result specs.
This function uses the result specification framework to request measurement counts directly, making it compatible with real quantum hardware.
Parameters:
Returns: Objective function that returns negative accuracy for minimization
Create a VQC objective function using hardware-compatible measurement result specs. This function uses the result specification framework to request measurement counts directly, making it compatible with real quantum hardware. Parameters: - training-data: Map with :features and :labels - circuit-construction-fn: Function creating VQC circuits - backend: Quantum backend - execution-options: Execution options including shots - num-classes: Number of classification classes Returns: Objective function that returns negative accuracy for minimization
(vqc-parameter-count config)Calculate required parameter count for VQC ansatz configuration.
This function determines how many parameters are needed for the specified ansatz type and configuration, independent of the feature map.
Parameters:
Returns: Number of parameters required for the ansatz
Calculate required parameter count for VQC ansatz configuration. This function determines how many parameters are needed for the specified ansatz type and configuration, independent of the feature map. Parameters: - config: VQC configuration map with ansatz settings Returns: Number of parameters required for the ansatz
(vqc-prediction-extractor measurement-result num-classes shots)Extract classification prediction from measurement result for enhanced template.
This function is designed to work with the enhanced-variational-algorithm template's prediction extraction infrastructure.
Parameters:
Returns: Predicted class label (integer)
Extract classification prediction from measurement result for enhanced template. This function is designed to work with the enhanced-variational-algorithm template's prediction extraction infrastructure. Parameters: - measurement-result: Measurement result map with :frequencies - num-classes: Number of classification classes Returns: Predicted class label (integer)
(vqc-result-processor optimization-result config)Process VQC results with hardware-compatible classification metrics.
This processor extracts classification performance metrics from the optimization results and adds VQC-specific analysis.
Parameters:
Returns: Enhanced result map with classification metrics
Process VQC results with hardware-compatible classification metrics. This processor extracts classification performance metrics from the optimization results and adds VQC-specific analysis. Parameters: - optimization-result: Result from variational optimization - config: VQC configuration Returns: Enhanced result map with classification metrics
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |