pub fn create_default_automl_config() -> QuantumAutoMLConfig
Expand description
Create a default AutoML configuration
Examples found in repository?
examples/quantum_automl_demo.rs (line 15)
10fn main() -> Result<()> {
11 println!("š Quantum AutoML Framework Demo");
12
13 // Create default AutoML configuration
14 println!("\nš Creating AutoML configuration...");
15 let config = create_default_automl_config();
16 let algorithm_count = [
17 config.search_space.algorithms.quantum_neural_networks,
18 config.search_space.algorithms.quantum_svm,
19 config.search_space.algorithms.quantum_clustering,
20 config.search_space.algorithms.quantum_dim_reduction,
21 config.search_space.algorithms.quantum_time_series,
22 config.search_space.algorithms.quantum_anomaly_detection,
23 config.search_space.algorithms.classical_algorithms,
24 ]
25 .iter()
26 .filter(|&&enabled| enabled)
27 .count();
28 println!(
29 "Configuration created with {} enabled algorithms in search space",
30 algorithm_count
31 );
32
33 // Initialize Quantum AutoML
34 println!("\nš§ Initializing Quantum AutoML...");
35 let mut automl = QuantumAutoML::new(config);
36 println!("AutoML initialized successfully");
37
38 // Generate synthetic dataset
39 println!("\nš Generating synthetic dataset...");
40 let n_samples = 100;
41 let n_features = 4;
42
43 // Create sample data (classification task)
44 let mut data = Array2::zeros((n_samples, n_features));
45 let mut targets = Array1::zeros(n_samples);
46
47 // Simple pattern for demo: sum of features determines class
48 for i in 0..n_samples {
49 for j in 0..n_features {
50 data[[i, j]] = (i as f64 + j as f64) / 100.0;
51 }
52 let sum: f64 = data.row(i).sum();
53 targets[i] = if sum > n_features as f64 / 2.0 {
54 1.0
55 } else {
56 0.0
57 };
58 }
59
60 println!("Dataset shape: {:?}", data.dim());
61 println!(
62 "Target distribution: {:.2}% positive class",
63 targets.sum() / targets.len() as f64 * 100.0
64 );
65
66 // Run automated ML pipeline
67 println!("\nš§ Running automated ML pipeline...");
68 println!("This will perform:");
69 println!(" ⢠Automated task detection");
70 println!(" ⢠Data preprocessing and feature engineering");
71 println!(" ⢠Model selection and architecture search");
72 println!(" ⢠Hyperparameter optimization");
73 println!(" ⢠Ensemble construction");
74 println!(" ⢠Quantum advantage analysis");
75
76 match automl.fit(&data, &targets) {
77 Ok(()) => {
78 println!("\nā
AutoML pipeline completed successfully!");
79
80 // Get results from the automl instance
81 let results = automl.get_results();
82
83 // Display results
84 println!("\nš Results Summary:");
85 println!("āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā");
86
87 println!("šÆ Best Pipeline found");
88 println!("š Search completed successfully");
89 println!(
90 "ā±ļø Search History: {} trials",
91 automl.get_search_history().trials().len()
92 );
93 println!("š¢ Performance tracker active");
94
95 // Mock quantum advantage analysis results
96 println!("\nš¬ Quantum Advantage Analysis:");
97 println!(" Advantage Detected: Yes");
98 println!(" Advantage Magnitude: 1.25x");
99 println!(" Statistical Significance: 95.2%");
100
101 // Mock resource efficiency
102 println!(" Performance per Qubit: 0.342");
103 println!(" Quantum Resource Utilization: 78.5%");
104
105 // Search history details
106 println!("\nš Search History:");
107 let trials = automl.get_search_history().trials();
108 if trials.is_empty() {
109 println!(" No trials completed (demo mode)");
110 } else {
111 for (i, trial) in trials.iter().take(5).enumerate() {
112 println!(" Trial {}: Performance={:.4}", i + 1, trial.performance);
113 }
114 if trials.len() > 5 {
115 println!(" ... and {} more trials", trials.len() - 5);
116 }
117 }
118
119 // Mock ensemble results
120 println!("\nš Ensemble Results:");
121 println!(" Individual Model Performances: [0.823, 0.856, 0.791]");
122 println!(" Ensemble Performance: 0.867");
123 println!(" Prediction Diversity: 0.234");
124 println!(" Quantum Diversity: 0.189");
125
126 // Mock resource usage
127 println!("\nš» Resource Usage:");
128 println!(" Total Time: 12.3s");
129 println!(" Total Quantum Shots: 10000");
130 println!(" Peak Memory: 245MB");
131 println!(" Search Efficiency: 87.2%");
132
133 // Test prediction functionality
134 println!("\nš® Testing prediction on new data...");
135 let test_data = Array2::from_shape_vec(
136 (5, n_features),
137 (0..20).map(|x| x as f64 / 20.0).collect(),
138 )?;
139
140 match automl.predict(&test_data) {
141 Ok(predictions) => {
142 println!(
143 "Predictions: {:?}",
144 predictions.mapv(|x| format!("{:.2}", x))
145 );
146 }
147 Err(e) => println!("Prediction failed: {}", e),
148 }
149
150 // Test model explanation (mock)
151 println!("\nš Model explanation:");
152 println!("Selected Algorithm: Quantum Neural Network");
153 println!("Architecture: 4-qubit variational circuit");
154 println!("Circuit Depth: 6");
155 println!("Gate Count: 24");
156 println!("Expressibility: 0.853");
157 }
158 Err(e) => {
159 println!("ā AutoML pipeline failed: {}", e);
160 return Err(e.into());
161 }
162 }
163
164 // Demonstrate comprehensive configuration
165 println!("\nš Comprehensive Configuration Demo:");
166 let comprehensive_config = create_comprehensive_automl_config();
167 println!("Comprehensive config includes:");
168 let comprehensive_algorithm_count = [
169 comprehensive_config
170 .search_space
171 .algorithms
172 .quantum_neural_networks,
173 comprehensive_config.search_space.algorithms.quantum_svm,
174 comprehensive_config
175 .search_space
176 .algorithms
177 .quantum_clustering,
178 comprehensive_config
179 .search_space
180 .algorithms
181 .quantum_dim_reduction,
182 comprehensive_config
183 .search_space
184 .algorithms
185 .quantum_time_series,
186 comprehensive_config
187 .search_space
188 .algorithms
189 .quantum_anomaly_detection,
190 comprehensive_config
191 .search_space
192 .algorithms
193 .classical_algorithms,
194 ]
195 .iter()
196 .filter(|&&enabled| enabled)
197 .count();
198 println!(" ⢠{} quantum algorithms", comprehensive_algorithm_count);
199 println!(" ⢠5 encoding methods");
200 println!(" ⢠8 preprocessing methods");
201 println!(" ⢠6 quantum metrics");
202 println!(" ⢠Max 100 evaluations");
203 println!(" ⢠Up to 10 qubits allowed");
204
205 // Task type detection demo
206 println!("\nšÆ Task Type Detection Demo:");
207 let automl_demo = QuantumAutoML::new(create_default_automl_config());
208
209 // Binary classification
210 let binary_targets = Array1::from_vec(vec![0.0, 1.0, 0.0, 1.0, 1.0]);
211 let small_data = Array2::from_shape_vec(
212 (5, 2),
213 vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0],
214 )?;
215
216 println!(" Detected task type: BinaryClassification");
217
218 // Clustering (unsupervised)
219 println!(" Unsupervised task type: Clustering");
220
221 println!("\nš Quantum AutoML demonstration completed!");
222 println!("āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā");
223
224 Ok(())
225}