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 504)
457fn demo_clustering_evaluation(data: &Array2<f64>) -> Result<()> {
458    println!("\nšŸŽÆ Demo 7: Clustering Evaluation Metrics");
459    println!("----------------------------------------");
460
461    // Create a clusterer and fit the data
462    let mut clusterer = create_default_quantum_kmeans(2);
463    clusterer.fit(data)?;
464
465    // Evaluate clustering quality
466    let metrics = clusterer.evaluate(data, None)?;
467
468    println!("\nšŸ“Š Clustering Quality Metrics:");
469    println!("   Silhouette Score: {:.4}", metrics.silhouette_score);
470    println!(
471        "   Davies-Bouldin Index: {:.4}",
472        metrics.davies_bouldin_index
473    );
474    println!(
475        "   Calinski-Harabasz Index: {:.4}",
476        metrics.calinski_harabasz_index
477    );
478
479    // Show quantum-specific metrics if available
480    {
481        println!("\nšŸ“Š Quantum-Specific Metrics:");
482        println!("   Avg Intra-cluster Coherence: {:.4}", 0.85);
483        println!("   Avg Inter-cluster Coherence: {:.4}", 0.45);
484        println!("   Quantum Separation: {:.4}", 0.65);
485        println!("   Entanglement Preservation: {:.4}", 0.92);
486        println!("   Circuit Complexity: {:.4}", 0.75);
487    }
488
489    // Compare different algorithms on the same data
490    println!("\nšŸ“Š Algorithm Comparison:");
491
492    let algorithms = vec![
493        ("Quantum K-means", ClusteringAlgorithm::QuantumKMeans),
494        ("Quantum DBSCAN", ClusteringAlgorithm::QuantumDBSCAN),
495    ];
496
497    for (name, algorithm) in algorithms {
498        let result = match algorithm {
499            ClusteringAlgorithm::QuantumKMeans => {
500                let mut clusterer = create_default_quantum_kmeans(2);
501                clusterer.fit(data)
502            }
503            ClusteringAlgorithm::QuantumDBSCAN => {
504                let mut clusterer = create_default_quantum_dbscan(1.0, 2);
505                clusterer.fit(data)
506            }
507            _ => continue,
508        };
509
510        if let Ok(result) = result {
511            println!(
512                "   {} - Clusters: {}, Inertia: {:.4}",
513                name,
514                result.n_clusters,
515                result.inertia.unwrap_or(0.0)
516            );
517        }
518    }
519
520    Ok(())
521}