Liking cljdoc? Tell your friends :D

org.soulspace.qclojure.ml.application.vqc

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.

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.
raw docstring

calculate-classification-metricsclj

(calculate-classification-metrics predicted-labels true-labels num-classes)

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

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
sourceraw docstring

create-feature-mapclj

(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:

  • 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 {})

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 {})
sourceraw docstring

extract-classification-from-measurementsclj

(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:

  • 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

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
sourceraw docstring

variational-quantum-classifierclj

(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:

  • :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})

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})
sourceraw docstring

vqc-circuit-constructorclj

(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:

  • config: VQC configuration map with ansatz and feature map settings

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
sourceraw docstring

vqc-data-constructorclj

(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:

  • config: VQC configuration map containing :training-data

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
sourceraw docstring

vqc-hamiltonian-constructorclj

(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.
sourceraw docstring

vqc-measurement-objectiveclj

(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:

  • 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

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
sourceraw docstring

vqc-parameter-countclj

(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:

  • config: VQC configuration map with ansatz settings

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
sourceraw docstring

vqc-result-processorclj

(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:

  • optimization-result: Result from variational optimization
  • config: VQC configuration

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
sourceraw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close