pub fn create_default_quantum_dbscan(
eps: f64,
min_samples: usize,
) -> QuantumClustererExpand 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}