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-frequencies
num-classes
shots)
Extract classification predictions from measurement frequency data.
This function converts raw measurement outcomes to classification predictions using hardware-compatible frequency counting, similar to QAOA solution extraction.
Parameters:
Returns: Map with classification probabilities and predicted label
Extract classification predictions from measurement frequency data. This function converts raw measurement outcomes to classification predictions using hardware-compatible frequency counting, similar to QAOA solution extraction. Parameters: - measurement-frequencies: Map of measurement outcomes to counts - 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)
Main VQC algorithm using variational algorithm template with hardware compatibility.
This implementation follows the VQE pattern but adapts it for classification tasks using measurement-based objectives compatible with real quantum hardware.
Supported feature map types:
Supported ansatz types:
Supported optimization methods:
Parameters:
Returns: Map containing VQC results and classification analysis
Examples: (variational-quantum-classifier backend {:training-data {:features [[0.1 0.2] [0.8 0.9] [0.2 0.1] [0.9 0.8]] :labels [0 1 0 1]} :num-features 2 :num-classes 2 :feature-map-type :angle :ansatz-type :hardware-efficient :num-layers 1 :optimization-method :adam :max-iterations 10 :shots 1024})
Main VQC algorithm using variational algorithm template with hardware compatibility. This implementation follows the VQE pattern but adapts it for classification tasks using measurement-based objectives compatible with real quantum hardware. Supported feature map types: - :angle - Angle encoding using rotation gates - :amplitude - Amplitude encoding (simplified to angle encoding) - :basis - Basis encoding for binary features - :iqp - Instantaneous Quantum Polynomial encoding - :custom - Custom feature map function provided in options Supported ansatz types: - :hardware-efficient - Hardware-efficient ansatz with configurable layers - :chemistry-inspired - Chemistry-inspired ansatz with excitation layers - :uccsd - UCCSD ansatz for complex classification - :symmetry-preserving - Symmetry-preserving ansatz - :custom - Custom ansatz function provided in options Supported optimization methods: - :gradient-descent - Basic gradient descent - :adam - Adam optimizer (default) - :nelder-mead - Derivative-free Nelder-Mead simplex method - :powell - Derivative-free Powell's method - :cmaes - Covariance Matrix Adaptation Evolution Strategy Parameters: - backend: Quantum backend implementing QuantumBackend protocol - options: VQC configuration map (validated against ::vqc-config spec) - :training-data - Map with :features and :labels (required) - :num-features - Number of features in the dataset (required) - :num-classes - Number of classes (required) - :feature-map-type - Feature map type (default: :angle) - :ansatz-type - Ansatz type (default: :hardware-efficient) - :optimization-method - Optimization method (default: :adam) - :max-iterations - Maximum iterations (default: 100) - :tolerance - Convergence tolerance (default: 1e-4) - :shots - Number of shots for circuit execution (default: 1024) Returns: Map containing VQC results and classification analysis Examples: (variational-quantum-classifier backend {:training-data {:features [[0.1 0.2] [0.8 0.9] [0.2 0.1] [0.9 0.8]] :labels [0 1 0 1]} :num-features 2 :num-classes 2 :feature-map-type :angle :ansatz-type :hardware-efficient :num-layers 1 :optimization-method :adam :max-iterations 10 :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-hamiltonian-constructor _config)
Create a dummy Hamiltonian for VQC to work with variational algorithm template.
VQC doesn't use a traditional Hamiltonian but the template expects one. We create a dummy Hamiltonian that won't be used in the actual optimization.
Create a dummy Hamiltonian for VQC to work with variational algorithm template. VQC doesn't use a traditional Hamiltonian but the template expects one. We create a dummy Hamiltonian that won't be used in the actual optimization.
(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-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 |