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}