PyIAML 1.0.2__tar.gz → 1.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (298) hide show
  1. {pyiaml-1.0.2 → pyiaml-1.1.0}/PKG-INFO +78 -34
  2. {pyiaml-1.0.2 → pyiaml-1.1.0}/PyIAML.egg-info/PKG-INFO +78 -34
  3. {pyiaml-1.0.2 → pyiaml-1.1.0}/PyIAML.egg-info/SOURCES.txt +11 -0
  4. pyiaml-1.1.0/README.md +129 -0
  5. {pyiaml-1.0.2 → pyiaml-1.1.0}/pyproject.toml +1 -1
  6. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_mice.py +94 -72
  7. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_selection/act_permutation_importance_selector.py +86 -3
  8. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/act_smote.py +4 -0
  9. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/act_smote_tomek.py +3 -0
  10. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/act_smoteenn.py +6 -0
  11. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/normalize/__init__.py +1 -1
  12. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/normalize/act_max_abs_scaler.py +1 -1
  13. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/normalize/act_minmax_scaler.py +1 -1
  14. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/normalize/act_normalizer.py +11 -7
  15. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_catboost_classifier.py +54 -31
  16. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_hist_gradient_boosting_classifier.py +3 -0
  17. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_linear_svc.py +3 -0
  18. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_passive_aggressive_classifier.py +3 -0
  19. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_ridge_classifier.py +3 -0
  20. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_sgd_classifier.py +3 -0
  21. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_svm_svc.py +9 -1
  22. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_catboost_regressor.py +41 -35
  23. pyiaml-1.1.0/src/iaml/actionables/predictors/survival/_survival_forest.py +75 -0
  24. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_aalen_additive_model.py +8 -2
  25. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_extra_survival_trees.py +23 -11
  26. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_random_survival_forest.py +27 -10
  27. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_weibull_aft.py +42 -30
  28. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/candidate.py +173 -51
  29. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/decorators/runner.py +5 -1
  30. pyiaml-1.1.0/src/iaml/explainers.py +29 -0
  31. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/explanation.py +3 -1
  32. pyiaml-1.1.0/src/iaml/flow/__init__.py +14 -0
  33. pyiaml-1.1.0/src/iaml/flow/compiler.py +255 -0
  34. pyiaml-1.1.0/src/iaml/flow/inspection.py +311 -0
  35. pyiaml-1.1.0/src/iaml/flow/model.py +673 -0
  36. pyiaml-1.1.0/src/iaml/flow/parameters.py +91 -0
  37. pyiaml-1.1.0/src/iaml/iaml.py +1587 -0
  38. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/iaml_pipeline.py +58 -10
  39. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/meta_explorer_step.py +6 -1
  40. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metastep.py +6 -1
  41. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/roc_auc_metric.py +18 -2
  42. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/optimizers/bayesian_optimizer.py +65 -49
  43. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/optimizers/genetic_optimizer.py +18 -8
  44. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/optimizers/optimizer.py +1 -0
  45. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/optimizers/random_optimizer.py +29 -32
  46. pyiaml-1.1.0/src/iaml/plots/_classification.py +40 -0
  47. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/box_plot.py +6 -6
  48. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/cumulative_hazard_plot.py +3 -0
  49. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/kaplan_meier_comparison_plot.py +3 -0
  50. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/precision_recall_curve_plot.py +9 -12
  51. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/roc_dynamique_curve_plot.py +3 -0
  52. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/rocauc_plot.py +9 -20
  53. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/shap_plot.py +6 -2
  54. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/predictor.py +11 -4
  55. pyiaml-1.1.0/src/iaml/search_policy.py +106 -0
  56. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/shared_cache.py +18 -10
  57. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/splitters/kfold_splitter.py +2 -2
  58. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/step.py +8 -2
  59. pyiaml-1.1.0/src/iaml/steps.py +21 -0
  60. pyiaml-1.1.0/src/iaml/study_analyses.py +229 -0
  61. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/timed_pool_executor.py +187 -110
  62. pyiaml-1.0.2/README.md +0 -85
  63. pyiaml-1.0.2/src/iaml/iaml.py +0 -1072
  64. {pyiaml-1.0.2 → pyiaml-1.1.0}/LICENSE +0 -0
  65. {pyiaml-1.0.2 → pyiaml-1.1.0}/MANIFEST.in +0 -0
  66. {pyiaml-1.0.2 → pyiaml-1.1.0}/PyIAML.egg-info/dependency_links.txt +0 -0
  67. {pyiaml-1.0.2 → pyiaml-1.1.0}/PyIAML.egg-info/requires.txt +0 -0
  68. {pyiaml-1.0.2 → pyiaml-1.1.0}/PyIAML.egg-info/top_level.txt +0 -0
  69. {pyiaml-1.0.2 → pyiaml-1.1.0}/setup.cfg +0 -0
  70. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/__init__.py +0 -0
  71. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionable.py +0 -0
  72. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/__init__.py +0 -0
  73. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/boosting/__init__.py +0 -0
  74. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/boosting/act_adaboost.py +0 -0
  75. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/__init__.py +0 -0
  76. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_categorical_imputer.py +0 -0
  77. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_count_vectorizer.py +0 -0
  78. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_drop_categorical_column.py +0 -0
  79. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_drop_date_column.py +0 -0
  80. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_drop_high_cardinality_categorical.py +0 -0
  81. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_drop_numerical_column.py +0 -0
  82. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_drop_textual_column.py +0 -0
  83. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_encode_target_column.py +0 -0
  84. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_frequency_encoder.py +0 -0
  85. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_hashing_vectorizer.py +0 -0
  86. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_knn_imputer.py +0 -0
  87. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_mean_column.py +0 -0
  88. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_missing_count_feature.py +0 -0
  89. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_missing_indicator.py +0 -0
  90. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_onehot.py +0 -0
  91. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_ordinal_encoder.py +0 -0
  92. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_rare_category_grouper.py +0 -0
  93. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_simple_imputer.py +0 -0
  94. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_split_date.py +0 -0
  95. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_target_encoder.py +0 -0
  96. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_text_normalizer.py +0 -0
  97. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_tf_idf.py +0 -0
  98. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_word2vec.py +0 -0
  99. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/__init__.py +0 -0
  100. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/act_coerce_numeric_strings.py +0 -0
  101. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/act_date_converter.py +0 -0
  102. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/act_drop_bad_quality_rows.py +0 -0
  103. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/act_drop_duplicate_rows.py +0 -0
  104. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/act_drop_high_missing_columns.py +0 -0
  105. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/act_drop_id_like_columns.py +0 -0
  106. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/act_normalize_column_names.py +0 -0
  107. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/act_sentinel_to_na_n.py +0 -0
  108. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/act_trim_space.py +0 -0
  109. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/__init__.py +0 -0
  110. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_cyclical_date_encoding.py +0 -0
  111. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_fast_ica.py +0 -0
  112. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_feature_agglomeration.py +0 -0
  113. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_k_bins_discretizer.py +0 -0
  114. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_k_means_features.py +0 -0
  115. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_kernel_pca.py +0 -0
  116. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_log_transformer.py +0 -0
  117. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_nystroem.py +0 -0
  118. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_pca.py +0 -0
  119. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_polynomial_features.py +0 -0
  120. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_power_transformer.py +0 -0
  121. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_quantile_transformer.py +0 -0
  122. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_rbf_sampler.py +0 -0
  123. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_select_percentile.py +0 -0
  124. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_sparse_random_projection.py +0 -0
  125. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_truncated_svd.py +0 -0
  126. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_selection/__init__.py +0 -0
  127. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_selection/act_remove_high_correlated_column.py +0 -0
  128. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_selection/act_remove_low_variance_column.py +0 -0
  129. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_selection/act_rfe.py +0 -0
  130. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_selection/act_select_from_model.py +0 -0
  131. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_selection/act_select_k_best.py +0 -0
  132. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/features_selection/act_vif_selector.py +0 -0
  133. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/__init__.py +0 -0
  134. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/act_adasyn.py +0 -0
  135. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/act_borderline_smote.py +0 -0
  136. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/act_near_miss.py +0 -0
  137. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/act_random_over_sampling.py +0 -0
  138. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/act_random_under_sampler.py +0 -0
  139. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/act_tomek_links.py +0 -0
  140. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/normalize/act_robust_scaler.py +0 -0
  141. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/normalize/act_standard_scaler.py +0 -0
  142. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/__init__.py +0 -0
  143. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/_xgboost.py +0 -0
  144. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/__init__.py +0 -0
  145. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_bagging_classifier.py +0 -0
  146. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_bernoulli_nb.py +0 -0
  147. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_complement_nb.py +0 -0
  148. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_decision_tree_classifier.py +0 -0
  149. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_extra_trees_classifier.py +0 -0
  150. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_gaussian_nb.py +0 -0
  151. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_knn.py +0 -0
  152. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_light_gbm_classifier.py +0 -0
  153. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_linear_discriminant_analysis.py +0 -0
  154. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_logistic_regression.py +0 -0
  155. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_mlp_classifier.py +0 -0
  156. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_multinomial_nb.py +0 -0
  157. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_quadratic_discriminant_analysis.py +0 -0
  158. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_randomforest.py +0 -0
  159. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_xgboost.py +0 -0
  160. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/__init__.py +0 -0
  161. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_ada_boost_regressor.py +0 -0
  162. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_ard_regression.py +0 -0
  163. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_decision_tree_regressor.py +0 -0
  164. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_elastic_net_regressor.py +0 -0
  165. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_extra_trees_regressor.py +0 -0
  166. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_gaussian_process_regressor.py +0 -0
  167. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_gboost_regressor.py +0 -0
  168. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_hist_gradient_boosting_regressor.py +0 -0
  169. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_huber_regressor.py +0 -0
  170. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_knn_regressor.py +0 -0
  171. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_lasso_regressor.py +0 -0
  172. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_light_gbm_regressor.py +0 -0
  173. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_linear_regression.py +0 -0
  174. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_mlp_regressor.py +0 -0
  175. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_poisson_regressor.py +0 -0
  176. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_quantile_regressor.py +0 -0
  177. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_randomforest_regressor.py +0 -0
  178. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_ransac_regressor.py +0 -0
  179. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_ridge_regressor.py +0 -0
  180. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_sgd_regressor.py +0 -0
  181. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_svm_svr.py +0 -0
  182. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_xgboost_regressor.py +0 -0
  183. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/__init__.py +0 -0
  184. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_cox.py +0 -0
  185. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_coxnet_survival_analysis.py +0 -0
  186. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_fast_survival_svm.py +0 -0
  187. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_gradient_boosting_survival_analysis.py +0 -0
  188. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_survival_component_wise_gboost.py +0 -0
  189. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_survival_tree.py +0 -0
  190. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_survival_xgboost.py +0 -0
  191. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/cache.py +0 -0
  192. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/cache_keys.py +0 -0
  193. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/core_dispatcher.py +0 -0
  194. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/data_type.py +0 -0
  195. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/dataset.py +0 -0
  196. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/decorators/__init__.py +0 -0
  197. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/decorators/all.py +0 -0
  198. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/decorators/is_step.py +0 -0
  199. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/logger.py +0 -0
  200. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/meta_ordered_step.py +0 -0
  201. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/meta_partial_explorer_step.py +0 -0
  202. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/meta_singleton.py +0 -0
  203. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metric.py +0 -0
  204. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metric_plot.py +0 -0
  205. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/__init__.py +0 -0
  206. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/_classification.py +0 -0
  207. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/_survival_times.py +0 -0
  208. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/accuracy_metric.py +0 -0
  209. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/balanced_accuracy_metric.py +0 -0
  210. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/brier_score.py +0 -0
  211. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/classification_error_metric.py +0 -0
  212. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/concordance_index_ipcw.py +0 -0
  213. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/concordance_index_metric.py +0 -0
  214. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/cumulative_dynamic_auc.py +0 -0
  215. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/f1_score_metric.py +0 -0
  216. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/integrated_brier_score.py +0 -0
  217. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/integrated_brier_score_loss.py +0 -0
  218. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/mean_absolute_error_metric.py +0 -0
  219. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/mean_squared_error_metric.py +0 -0
  220. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/mean_squared_log_error_metric.py +0 -0
  221. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/median_absolute_error_metric.py +0 -0
  222. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/precision_metric.py +0 -0
  223. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/r2_score_metric.py +0 -0
  224. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/recall_metric.py +0 -0
  225. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/specificity_metric.py +0 -0
  226. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/specificity_multiclass_metric.py +0 -0
  227. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/metrics/specificity_multilabel_metric.py +0 -0
  228. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/optimizers/__init__.py +0 -0
  229. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plot.py +0 -0
  230. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/__init__.py +0 -0
  231. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/bar_plot.py +0 -0
  232. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/class_prediction_error_plot.py +0 -0
  233. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/classification_report_plot.py +0 -0
  234. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/confusion_matrix_plot.py +0 -0
  235. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/correlation_heatmap_plot.py +0 -0
  236. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/density_plot.py +0 -0
  237. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/histogram_plot.py +0 -0
  238. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/line_plot.py +0 -0
  239. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/missingness_heatmap_plot.py +0 -0
  240. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/outlier_plot.py +0 -0
  241. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/pair_plot.py +0 -0
  242. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/prediction_error_plot.py +0 -0
  243. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/qq_plot.py +0 -0
  244. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/residual_plot.py +0 -0
  245. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/target_distribution_plot.py +0 -0
  246. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/plots/violin_plot.py +0 -0
  247. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/reference.py +0 -0
  248. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/sklearn_preprocessor.py +0 -0
  249. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/splitters/__init__.py +0 -0
  250. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/splitters/random_splitter.py +0 -0
  251. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/stack.py +0 -0
  252. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistic.py +0 -0
  253. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/__init__.py +0 -0
  254. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/anova_statistic.py +0 -0
  255. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/cardinality_ratio_statistic.py +0 -0
  256. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/category_cooccurrence_statistic.py +0 -0
  257. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/chi_square_statistic.py +0 -0
  258. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/coef_variation_statistic.py +0 -0
  259. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/correlation_with_target.py +0 -0
  260. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/count.py +0 -0
  261. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/data_type_summary_statistic.py +0 -0
  262. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/duplicate_row_statistic.py +0 -0
  263. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/effect_size_statistic.py +0 -0
  264. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/entropy_statistic.py +0 -0
  265. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/event_rate_statistic.py +0 -0
  266. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/grouped_mean_statistic.py +0 -0
  267. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/iqr_statistic.py +0 -0
  268. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/kurtosis.py +0 -0
  269. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/mad_statistic.py +0 -0
  270. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/mean.py +0 -0
  271. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/median_statistic.py +0 -0
  272. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/minmax.py +0 -0
  273. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/missing_rate_statistic.py +0 -0
  274. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/mode.py +0 -0
  275. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/most_frequent_ratio.py +0 -0
  276. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/outlier_count_iqr_statistic.py +0 -0
  277. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/quantile.py +0 -0
  278. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/range.py +0 -0
  279. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/rare_category_rate.py +0 -0
  280. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/skewness.py +0 -0
  281. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/stdev.py +0 -0
  282. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/summary_table_statistic.py +0 -0
  283. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/time_by_group_statistic.py +0 -0
  284. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/time_summary_statistic.py +0 -0
  285. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/top_k_value_counts.py +0 -0
  286. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/unique_count_statistic.py +0 -0
  287. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/value_counts.py +0 -0
  288. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/variance.py +0 -0
  289. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/statistics/violin.py +0 -0
  290. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/step_cache.py +0 -0
  291. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/step_wrapper.py +0 -0
  292. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/type_of_target.py +0 -0
  293. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/void_step.py +0 -0
  294. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/worker_manager.py +0 -0
  295. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/wrapper/__init__.py +0 -0
  296. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/wrapper/wrap_basic_gridsearch.py +0 -0
  297. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/wrapper/wrap_genetic_gridsearch.py +0 -0
  298. {pyiaml-1.0.2 → pyiaml-1.1.0}/src/iaml/wrapper/wrap_iterative_gridsearch.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyIAML
3
- Version: 1.0.2
3
+ Version: 1.1.0
4
4
  Summary: Integrated AutoML for Medical Labs: explainable pipelines for clinical research
5
5
  Author-email: Rudy MERIEUX <rmerieux@chu-reims.fr>, Hugo RUELLET <hruellet@chu-reims.fr>, Robin BOURACHOT <rbourachot@chu-reims.fr>, Youssouf DAHLOUK <ydahlouk@chu-reims.fr>
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -713,31 +713,20 @@ Dynamic: license-file
713
713
  # IAML — Integrated AutoML for Medical Labs
714
714
 
715
715
  IAML (Integrated AutoML for Medical Labs) is a Python framework developed by IIAS
716
- to make machine learning more accessible to clinical research teams. It brings
717
- preprocessing, model search and evaluation into one workflow for classification,
718
- regression and survival analysis on tabular data.
716
+ for clinical research teams working with tabular data. It supports classification,
717
+ regression and survival analysis through two complementary strengths:
719
718
 
720
- Researchers can inspect the steps of a selected pipeline, evaluate its predictions
721
- and generate explanations to discuss with clinicians and data scientists.
722
- IAML includes a broad set of built-in methods. **Go further with customization.**
723
- Add your team's preprocessing steps, models, metrics, validation splitters
724
- and search optimizers to adapt the workflow to your research domain.
725
- These contributions can be shared and reused across studies.
726
- The [extension guide](https://iias-research.github.io/iaml/adaptability.html) shows how to get started.
719
+ - **An integrated workflow with very little configuration.** Describe your data,
720
+ train prediction pipelines with AutoML, evaluate the selected model and request
721
+ explanations and study outputs. Built-in components and an automatic pipeline
722
+ let you start with a few lines of Python.
723
+ - **A pipeline API for teams going further.** Compose complete pipelines with
724
+ `>>`, choose or exclude methods, edit reusable fragments and configure parameter
725
+ domains. The same API configures metrics, descriptive statistics and explanations,
726
+ and lets your team's components become reusable building blocks.
727
727
 
728
- ## Clinical research workflow
729
-
730
- - **Build prediction pipelines:** search preprocessing steps, models and their
731
- parameters through a Python API.
732
- - **Evaluate a study outcome:** choose the metric and validation strategy, then
733
- assess the selected candidate on held-out data.
734
- - **Inspect and explain:** describe pipeline steps, compute SHAP explanations and
735
- generate task-specific performance plots.
736
- - **Document an experiment:** collect method references and optionally retain
737
- cross-validation records with `keep_training_history=True`.
738
-
739
- The [research guide](https://iias-research.github.io/iaml/scientific.html) shows how to use these outputs when
740
- reporting a study and recording the settings needed to repeat an experiment.
728
+ Both paths use IAML's training, cross-validation and model selection workflow.
729
+ Start with the defaults or build a recipe around your study's methods.
741
730
 
742
731
  ## Installation
743
732
 
@@ -749,7 +738,7 @@ python -m pip install PyIAML
749
738
 
750
739
  The distribution is named `PyIAML`. The Python import is `iaml`.
751
740
 
752
- ## How to run
741
+ ## Use the integrated workflow
753
742
 
754
743
  Save this example as `example.py` and run it with `python example.py`.
755
744
  It uses a dataset bundled with scikit-learn, so no dataset download is needed.
@@ -765,6 +754,7 @@ if __name__ == "__main__":
765
754
  X, y, stratify=y, random_state=42
766
755
  )
767
756
  search = IAML(max_duration=30, max_workers=1)
757
+ print(search.get_descriptive_statistics(X_train, y_train))
768
758
  search.fit(X_train, y_train)
769
759
  chosen_model = search.chosen_candidate
770
760
  print(chosen_model.evaluate(X_test, y_test))
@@ -776,18 +766,72 @@ malignant and `1` for benign. Keep the `__main__` guard because training uses
776
766
  multiprocessing. The example uses one worker and a 30-second search budget.
777
767
  Final fitting can take additional time.
778
768
 
769
+ Request descriptive statistics, evaluation, plots and explanations when you
770
+ need them. The [worked example](https://iias-research.github.io/iaml/worked_example.html)
771
+ shows the model, performance plots and SHAP outputs produced by this workflow.
772
+
773
+ ## Compose and adapt complete pipelines
774
+
775
+ Pipeline configuration is optional. To see what it enables, explore
776
+ [Customize IAML](https://iias-research.github.io/iaml/discover_pipelines.html),
777
+ then try the recipe below when your study needs specific methods.
778
+
779
+ Build a recipe from reusable components, then train it through the same `fit`
780
+ and `evaluate` calls. For example, impute missing values, choose from the
781
+ normalization family except `UnitNormScaler`, and compare two predictors:
782
+
783
+ ```python
784
+ from iaml import IAML
785
+ from iaml.flow import Int, choice, normalizers, use
786
+ from iaml.steps import (
787
+ LogisticRegression, UnitNormScaler, RandomForestClassifier, SimpleImputer,
788
+ )
789
+
790
+ pipeline = (
791
+ use(SimpleImputer).named("cleaning")
792
+ >> normalizers().remove(UnitNormScaler).named("normalize")
793
+ >> choice(
794
+ use(LogisticRegression).named("logistic"),
795
+ use(
796
+ RandomForestClassifier,
797
+ n_estimators=Int(100, 300, initial=150),
798
+ ).named("forest"),
799
+ ).named("predictor")
800
+ )
801
+ search = IAML(pipeline=pipeline, max_duration=30, max_workers=1)
802
+ ```
803
+
804
+ Recipes remain editable after construction: navigate by alias, call `add`,
805
+ `remove` or `replace`, and configure all occurrences of a component with
806
+ `find_all(Class).configure(...)`. Clone a fragment to reuse it independently.
807
+ You can also start from `IAML().pipeline` and adapt its visible `main` and
808
+ `minimal` branches.
809
+
810
+ The [pipeline guide](https://iias-research.github.io/iaml/pipelines/index.html)
811
+ covers construction, editing, fixed values and parameter domains. Continue with
812
+ [study configuration](https://iias-research.github.io/iaml/pipelines/study.html)
813
+ for metrics, descriptive statistics and explanations. The
814
+ [example catalogue](docs/examples/pipelines/README.rst) provides runnable Python examples.
815
+
816
+ Add custom preprocessing steps, models, metrics, validation splitters or search
817
+ optimizers when your domain needs them. These components can be shared across
818
+ studies; the [extension guide](https://iias-research.github.io/iaml/adaptability.html)
819
+ explains how to implement them.
820
+
779
821
  ## Documentation
780
822
 
781
- The [user guides](https://iias-research.github.io/iaml/) cover data preparation, model search, evaluation
782
- and interpretation:
823
+ Start with [Discover IAML](https://iias-research.github.io/iaml/) for a visual
824
+ study walkthrough or [Quick Start](https://iias-research.github.io/iaml/quick_start.html)
825
+ to run it. The integrated guides follow the study through
826
+ [training](https://iias-research.github.io/iaml/usage.html),
827
+ [evaluation](https://iias-research.github.io/iaml/evaluation.html),
828
+ [explanations](https://iias-research.github.io/iaml/explainability.html) and
829
+ [reporting](https://iias-research.github.io/iaml/scientific.html).
783
830
 
784
- - [Quick Start](https://iias-research.github.io/iaml/quick_start.html): install IAML and run an example.
785
- - [01 / Build](https://iias-research.github.io/iaml/usage.html): prepare data and configure a search.
786
- - [02 / Evaluate](https://iias-research.github.io/iaml/evaluation.html): assess predictions on held-out data.
787
- - [03 / Explain](https://iias-research.github.io/iaml/explainability.html): inspect methods and interpret feature contributions.
788
- - [Study reporting](https://iias-research.github.io/iaml/scientific.html): save outputs and record experiment settings.
789
- - [Extending IAML](https://iias-research.github.io/iaml/adaptability.html): add reusable methods for your team's research.
790
- - [Component availability](https://iias-research.github.io/iaml/component_status.html): explore the main component families and their API documentation.
831
+ The [advanced guide map](https://iias-research.github.io/iaml/pipelines/index.html)
832
+ connects pipeline construction, study configuration and component extensions.
833
+ Consult [component availability](https://iias-research.github.io/iaml/component_status.html)
834
+ for supported methods and optional dependencies.
791
835
 
792
836
  ## Credits
793
837
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyIAML
3
- Version: 1.0.2
3
+ Version: 1.1.0
4
4
  Summary: Integrated AutoML for Medical Labs: explainable pipelines for clinical research
5
5
  Author-email: Rudy MERIEUX <rmerieux@chu-reims.fr>, Hugo RUELLET <hruellet@chu-reims.fr>, Robin BOURACHOT <rbourachot@chu-reims.fr>, Youssouf DAHLOUK <ydahlouk@chu-reims.fr>
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -713,31 +713,20 @@ Dynamic: license-file
713
713
  # IAML — Integrated AutoML for Medical Labs
714
714
 
715
715
  IAML (Integrated AutoML for Medical Labs) is a Python framework developed by IIAS
716
- to make machine learning more accessible to clinical research teams. It brings
717
- preprocessing, model search and evaluation into one workflow for classification,
718
- regression and survival analysis on tabular data.
716
+ for clinical research teams working with tabular data. It supports classification,
717
+ regression and survival analysis through two complementary strengths:
719
718
 
720
- Researchers can inspect the steps of a selected pipeline, evaluate its predictions
721
- and generate explanations to discuss with clinicians and data scientists.
722
- IAML includes a broad set of built-in methods. **Go further with customization.**
723
- Add your team's preprocessing steps, models, metrics, validation splitters
724
- and search optimizers to adapt the workflow to your research domain.
725
- These contributions can be shared and reused across studies.
726
- The [extension guide](https://iias-research.github.io/iaml/adaptability.html) shows how to get started.
719
+ - **An integrated workflow with very little configuration.** Describe your data,
720
+ train prediction pipelines with AutoML, evaluate the selected model and request
721
+ explanations and study outputs. Built-in components and an automatic pipeline
722
+ let you start with a few lines of Python.
723
+ - **A pipeline API for teams going further.** Compose complete pipelines with
724
+ `>>`, choose or exclude methods, edit reusable fragments and configure parameter
725
+ domains. The same API configures metrics, descriptive statistics and explanations,
726
+ and lets your team's components become reusable building blocks.
727
727
 
728
- ## Clinical research workflow
729
-
730
- - **Build prediction pipelines:** search preprocessing steps, models and their
731
- parameters through a Python API.
732
- - **Evaluate a study outcome:** choose the metric and validation strategy, then
733
- assess the selected candidate on held-out data.
734
- - **Inspect and explain:** describe pipeline steps, compute SHAP explanations and
735
- generate task-specific performance plots.
736
- - **Document an experiment:** collect method references and optionally retain
737
- cross-validation records with `keep_training_history=True`.
738
-
739
- The [research guide](https://iias-research.github.io/iaml/scientific.html) shows how to use these outputs when
740
- reporting a study and recording the settings needed to repeat an experiment.
728
+ Both paths use IAML's training, cross-validation and model selection workflow.
729
+ Start with the defaults or build a recipe around your study's methods.
741
730
 
742
731
  ## Installation
743
732
 
@@ -749,7 +738,7 @@ python -m pip install PyIAML
749
738
 
750
739
  The distribution is named `PyIAML`. The Python import is `iaml`.
751
740
 
752
- ## How to run
741
+ ## Use the integrated workflow
753
742
 
754
743
  Save this example as `example.py` and run it with `python example.py`.
755
744
  It uses a dataset bundled with scikit-learn, so no dataset download is needed.
@@ -765,6 +754,7 @@ if __name__ == "__main__":
765
754
  X, y, stratify=y, random_state=42
766
755
  )
767
756
  search = IAML(max_duration=30, max_workers=1)
757
+ print(search.get_descriptive_statistics(X_train, y_train))
768
758
  search.fit(X_train, y_train)
769
759
  chosen_model = search.chosen_candidate
770
760
  print(chosen_model.evaluate(X_test, y_test))
@@ -776,18 +766,72 @@ malignant and `1` for benign. Keep the `__main__` guard because training uses
776
766
  multiprocessing. The example uses one worker and a 30-second search budget.
777
767
  Final fitting can take additional time.
778
768
 
769
+ Request descriptive statistics, evaluation, plots and explanations when you
770
+ need them. The [worked example](https://iias-research.github.io/iaml/worked_example.html)
771
+ shows the model, performance plots and SHAP outputs produced by this workflow.
772
+
773
+ ## Compose and adapt complete pipelines
774
+
775
+ Pipeline configuration is optional. To see what it enables, explore
776
+ [Customize IAML](https://iias-research.github.io/iaml/discover_pipelines.html),
777
+ then try the recipe below when your study needs specific methods.
778
+
779
+ Build a recipe from reusable components, then train it through the same `fit`
780
+ and `evaluate` calls. For example, impute missing values, choose from the
781
+ normalization family except `UnitNormScaler`, and compare two predictors:
782
+
783
+ ```python
784
+ from iaml import IAML
785
+ from iaml.flow import Int, choice, normalizers, use
786
+ from iaml.steps import (
787
+ LogisticRegression, UnitNormScaler, RandomForestClassifier, SimpleImputer,
788
+ )
789
+
790
+ pipeline = (
791
+ use(SimpleImputer).named("cleaning")
792
+ >> normalizers().remove(UnitNormScaler).named("normalize")
793
+ >> choice(
794
+ use(LogisticRegression).named("logistic"),
795
+ use(
796
+ RandomForestClassifier,
797
+ n_estimators=Int(100, 300, initial=150),
798
+ ).named("forest"),
799
+ ).named("predictor")
800
+ )
801
+ search = IAML(pipeline=pipeline, max_duration=30, max_workers=1)
802
+ ```
803
+
804
+ Recipes remain editable after construction: navigate by alias, call `add`,
805
+ `remove` or `replace`, and configure all occurrences of a component with
806
+ `find_all(Class).configure(...)`. Clone a fragment to reuse it independently.
807
+ You can also start from `IAML().pipeline` and adapt its visible `main` and
808
+ `minimal` branches.
809
+
810
+ The [pipeline guide](https://iias-research.github.io/iaml/pipelines/index.html)
811
+ covers construction, editing, fixed values and parameter domains. Continue with
812
+ [study configuration](https://iias-research.github.io/iaml/pipelines/study.html)
813
+ for metrics, descriptive statistics and explanations. The
814
+ [example catalogue](docs/examples/pipelines/README.rst) provides runnable Python examples.
815
+
816
+ Add custom preprocessing steps, models, metrics, validation splitters or search
817
+ optimizers when your domain needs them. These components can be shared across
818
+ studies; the [extension guide](https://iias-research.github.io/iaml/adaptability.html)
819
+ explains how to implement them.
820
+
779
821
  ## Documentation
780
822
 
781
- The [user guides](https://iias-research.github.io/iaml/) cover data preparation, model search, evaluation
782
- and interpretation:
823
+ Start with [Discover IAML](https://iias-research.github.io/iaml/) for a visual
824
+ study walkthrough or [Quick Start](https://iias-research.github.io/iaml/quick_start.html)
825
+ to run it. The integrated guides follow the study through
826
+ [training](https://iias-research.github.io/iaml/usage.html),
827
+ [evaluation](https://iias-research.github.io/iaml/evaluation.html),
828
+ [explanations](https://iias-research.github.io/iaml/explainability.html) and
829
+ [reporting](https://iias-research.github.io/iaml/scientific.html).
783
830
 
784
- - [Quick Start](https://iias-research.github.io/iaml/quick_start.html): install IAML and run an example.
785
- - [01 / Build](https://iias-research.github.io/iaml/usage.html): prepare data and configure a search.
786
- - [02 / Evaluate](https://iias-research.github.io/iaml/evaluation.html): assess predictions on held-out data.
787
- - [03 / Explain](https://iias-research.github.io/iaml/explainability.html): inspect methods and interpret feature contributions.
788
- - [Study reporting](https://iias-research.github.io/iaml/scientific.html): save outputs and record experiment settings.
789
- - [Extending IAML](https://iias-research.github.io/iaml/adaptability.html): add reusable methods for your team's research.
790
- - [Component availability](https://iias-research.github.io/iaml/component_status.html): explore the main component families and their API documentation.
831
+ The [advanced guide map](https://iias-research.github.io/iaml/pipelines/index.html)
832
+ connects pipeline construction, study configuration and component extensions.
833
+ Consult [component availability](https://iias-research.github.io/iaml/component_status.html)
834
+ for supported methods and optional dependencies.
791
835
 
792
836
  ## Credits
793
837
 
@@ -15,6 +15,7 @@ src/iaml/candidate.py
15
15
  src/iaml/core_dispatcher.py
16
16
  src/iaml/data_type.py
17
17
  src/iaml/dataset.py
18
+ src/iaml/explainers.py
18
19
  src/iaml/explanation.py
19
20
  src/iaml/iaml.py
20
21
  src/iaml/iaml_pipeline.py
@@ -29,6 +30,7 @@ src/iaml/metric_plot.py
29
30
  src/iaml/plot.py
30
31
  src/iaml/predictor.py
31
32
  src/iaml/reference.py
33
+ src/iaml/search_policy.py
32
34
  src/iaml/shared_cache.py
33
35
  src/iaml/sklearn_preprocessor.py
34
36
  src/iaml/stack.py
@@ -36,6 +38,8 @@ src/iaml/statistic.py
36
38
  src/iaml/step.py
37
39
  src/iaml/step_cache.py
38
40
  src/iaml/step_wrapper.py
41
+ src/iaml/steps.py
42
+ src/iaml/study_analyses.py
39
43
  src/iaml/timed_pool_executor.py
40
44
  src/iaml/type_of_target.py
41
45
  src/iaml/void_step.py
@@ -169,6 +173,7 @@ src/iaml/actionables/predictors/regressor/act_sgd_regressor.py
169
173
  src/iaml/actionables/predictors/regressor/act_svm_svr.py
170
174
  src/iaml/actionables/predictors/regressor/act_xgboost_regressor.py
171
175
  src/iaml/actionables/predictors/survival/__init__.py
176
+ src/iaml/actionables/predictors/survival/_survival_forest.py
172
177
  src/iaml/actionables/predictors/survival/act_aalen_additive_model.py
173
178
  src/iaml/actionables/predictors/survival/act_cox.py
174
179
  src/iaml/actionables/predictors/survival/act_coxnet_survival_analysis.py
@@ -184,6 +189,11 @@ src/iaml/decorators/__init__.py
184
189
  src/iaml/decorators/all.py
185
190
  src/iaml/decorators/is_step.py
186
191
  src/iaml/decorators/runner.py
192
+ src/iaml/flow/__init__.py
193
+ src/iaml/flow/compiler.py
194
+ src/iaml/flow/inspection.py
195
+ src/iaml/flow/model.py
196
+ src/iaml/flow/parameters.py
187
197
  src/iaml/metrics/__init__.py
188
198
  src/iaml/metrics/_classification.py
189
199
  src/iaml/metrics/_survival_times.py
@@ -214,6 +224,7 @@ src/iaml/optimizers/genetic_optimizer.py
214
224
  src/iaml/optimizers/optimizer.py
215
225
  src/iaml/optimizers/random_optimizer.py
216
226
  src/iaml/plots/__init__.py
227
+ src/iaml/plots/_classification.py
217
228
  src/iaml/plots/bar_plot.py
218
229
  src/iaml/plots/box_plot.py
219
230
  src/iaml/plots/class_prediction_error_plot.py
pyiaml-1.1.0/README.md ADDED
@@ -0,0 +1,129 @@
1
+ # IAML — Integrated AutoML for Medical Labs
2
+
3
+ IAML (Integrated AutoML for Medical Labs) is a Python framework developed by IIAS
4
+ for clinical research teams working with tabular data. It supports classification,
5
+ regression and survival analysis through two complementary strengths:
6
+
7
+ - **An integrated workflow with very little configuration.** Describe your data,
8
+ train prediction pipelines with AutoML, evaluate the selected model and request
9
+ explanations and study outputs. Built-in components and an automatic pipeline
10
+ let you start with a few lines of Python.
11
+ - **A pipeline API for teams going further.** Compose complete pipelines with
12
+ `>>`, choose or exclude methods, edit reusable fragments and configure parameter
13
+ domains. The same API configures metrics, descriptive statistics and explanations,
14
+ and lets your team's components become reusable building blocks.
15
+
16
+ Both paths use IAML's training, cross-validation and model selection workflow.
17
+ Start with the defaults or build a recipe around your study's methods.
18
+
19
+ ## Installation
20
+
21
+ Use Python 3.10 or later:
22
+
23
+ ```bash
24
+ python -m pip install PyIAML
25
+ ```
26
+
27
+ The distribution is named `PyIAML`. The Python import is `iaml`.
28
+
29
+ ## Use the integrated workflow
30
+
31
+ Save this example as `example.py` and run it with `python example.py`.
32
+ It uses a dataset bundled with scikit-learn, so no dataset download is needed.
33
+
34
+ ```python
35
+ from sklearn.datasets import load_breast_cancer
36
+ from sklearn.model_selection import train_test_split
37
+ from iaml import IAML
38
+
39
+ if __name__ == "__main__":
40
+ X, y = load_breast_cancer(return_X_y=True, as_frame=True)
41
+ X_train, X_test, y_train, y_test = train_test_split(
42
+ X, y, stratify=y, random_state=42
43
+ )
44
+ search = IAML(max_duration=30, max_workers=1)
45
+ print(search.get_descriptive_statistics(X_train, y_train))
46
+ search.fit(X_train, y_train)
47
+ chosen_model = search.chosen_candidate
48
+ print(chosen_model.evaluate(X_test, y_test))
49
+ ```
50
+
51
+ `chosen_model` is the selected model, including its preprocessing.
52
+ `evaluate` scores it on the held-out test set. The dataset labels are `0` for
53
+ malignant and `1` for benign. Keep the `__main__` guard because training uses
54
+ multiprocessing. The example uses one worker and a 30-second search budget.
55
+ Final fitting can take additional time.
56
+
57
+ Request descriptive statistics, evaluation, plots and explanations when you
58
+ need them. The [worked example](https://iias-research.github.io/iaml/worked_example.html)
59
+ shows the model, performance plots and SHAP outputs produced by this workflow.
60
+
61
+ ## Compose and adapt complete pipelines
62
+
63
+ Pipeline configuration is optional. To see what it enables, explore
64
+ [Customize IAML](https://iias-research.github.io/iaml/discover_pipelines.html),
65
+ then try the recipe below when your study needs specific methods.
66
+
67
+ Build a recipe from reusable components, then train it through the same `fit`
68
+ and `evaluate` calls. For example, impute missing values, choose from the
69
+ normalization family except `UnitNormScaler`, and compare two predictors:
70
+
71
+ ```python
72
+ from iaml import IAML
73
+ from iaml.flow import Int, choice, normalizers, use
74
+ from iaml.steps import (
75
+ LogisticRegression, UnitNormScaler, RandomForestClassifier, SimpleImputer,
76
+ )
77
+
78
+ pipeline = (
79
+ use(SimpleImputer).named("cleaning")
80
+ >> normalizers().remove(UnitNormScaler).named("normalize")
81
+ >> choice(
82
+ use(LogisticRegression).named("logistic"),
83
+ use(
84
+ RandomForestClassifier,
85
+ n_estimators=Int(100, 300, initial=150),
86
+ ).named("forest"),
87
+ ).named("predictor")
88
+ )
89
+ search = IAML(pipeline=pipeline, max_duration=30, max_workers=1)
90
+ ```
91
+
92
+ Recipes remain editable after construction: navigate by alias, call `add`,
93
+ `remove` or `replace`, and configure all occurrences of a component with
94
+ `find_all(Class).configure(...)`. Clone a fragment to reuse it independently.
95
+ You can also start from `IAML().pipeline` and adapt its visible `main` and
96
+ `minimal` branches.
97
+
98
+ The [pipeline guide](https://iias-research.github.io/iaml/pipelines/index.html)
99
+ covers construction, editing, fixed values and parameter domains. Continue with
100
+ [study configuration](https://iias-research.github.io/iaml/pipelines/study.html)
101
+ for metrics, descriptive statistics and explanations. The
102
+ [example catalogue](docs/examples/pipelines/README.rst) provides runnable Python examples.
103
+
104
+ Add custom preprocessing steps, models, metrics, validation splitters or search
105
+ optimizers when your domain needs them. These components can be shared across
106
+ studies; the [extension guide](https://iias-research.github.io/iaml/adaptability.html)
107
+ explains how to implement them.
108
+
109
+ ## Documentation
110
+
111
+ Start with [Discover IAML](https://iias-research.github.io/iaml/) for a visual
112
+ study walkthrough or [Quick Start](https://iias-research.github.io/iaml/quick_start.html)
113
+ to run it. The integrated guides follow the study through
114
+ [training](https://iias-research.github.io/iaml/usage.html),
115
+ [evaluation](https://iias-research.github.io/iaml/evaluation.html),
116
+ [explanations](https://iias-research.github.io/iaml/explainability.html) and
117
+ [reporting](https://iias-research.github.io/iaml/scientific.html).
118
+
119
+ The [advanced guide map](https://iias-research.github.io/iaml/pipelines/index.html)
120
+ connects pipeline construction, study configuration and component extensions.
121
+ Consult [component availability](https://iias-research.github.io/iaml/component_status.html)
122
+ for supported methods and optional dependencies.
123
+
124
+ ## Credits
125
+
126
+ - Rudy MERIEUX
127
+ - Robin BOURACHOT
128
+ - Hugo RUELLET
129
+ - Youssouf DAHLOUK
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "PyIAML"
3
- version = "1.0.2"
3
+ version = "1.1.0"
4
4
  authors = [
5
5
  { name="Rudy MERIEUX", email="rmerieux@chu-reims.fr" },
6
6
  { name="Hugo RUELLET", email="hruellet@chu-reims.fr" },