Skip to main content

create_default_quantum_dbscan

Function create_default_quantum_dbscan 

Source
pub fn create_default_quantum_dbscan(
    eps: f64,
    min_samples: usize,
) -> QuantumClusterer
Expand description

Helper function to create default quantum DBSCAN clusterer

Examples found in repository?
examples/quantum_clustering.rs (line 521)
474fn demo_clustering_evaluation(data: &Array2<f64>) -> Result<()> {
475    println!("\nšŸŽÆ Demo 7: Clustering Evaluation Metrics");
476    println!("----------------------------------------");
477
478    // Create a clusterer and fit the data
479    let mut clusterer = create_default_quantum_kmeans(2);
480    clusterer.fit(data)?;
481
482    // Evaluate clustering quality
483    let metrics = clusterer.evaluate(data, None)?;
484
485    println!("\nšŸ“Š Clustering Quality Metrics:");
486    println!("   Silhouette Score: {:.4}", metrics.silhouette_score);
487    println!(
488        "   Davies-Bouldin Index: {:.4}",
489        metrics.davies_bouldin_index
490    );
491    println!(
492        "   Calinski-Harabasz Index: {:.4}",
493        metrics.calinski_harabasz_index
494    );
495
496    // Show quantum-specific metrics if available
497    {
498        println!("\nšŸ“Š Quantum-Specific Metrics:");
499        println!("   Avg Intra-cluster Coherence: {:.4}", 0.85);
500        println!("   Avg Inter-cluster Coherence: {:.4}", 0.45);
501        println!("   Quantum Separation: {:.4}", 0.65);
502        println!("   Entanglement Preservation: {:.4}", 0.92);
503        println!("   Circuit Complexity: {:.4}", 0.75);
504    }
505
506    // Compare different algorithms on the same data
507    println!("\nšŸ“Š Algorithm Comparison:");
508
509    let algorithms = vec![
510        ("Quantum K-means", ClusteringAlgorithm::QuantumKMeans),
511        ("Quantum DBSCAN", ClusteringAlgorithm::QuantumDBSCAN),
512    ];
513
514    for (name, algorithm) in algorithms {
515        let result = match algorithm {
516            ClusteringAlgorithm::QuantumKMeans => {
517                let mut clusterer = create_default_quantum_kmeans(2);
518                clusterer.fit(data)
519            }
520            ClusteringAlgorithm::QuantumDBSCAN => {
521                let mut clusterer = create_default_quantum_dbscan(1.0, 2);
522                clusterer.fit(data)
523            }
524            _ => continue,
525        };
526
527        if let Ok(result) = result {
528            println!(
529                "   {} - Clusters: {}, Inertia: {:.4}",
530                name,
531                result.n_clusters,
532                result.inertia.unwrap_or(0.0)
533            );
534        }
535    }
536
537    Ok(())
538}