PyIAML 1.0.1__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.
- {pyiaml-1.0.1 → pyiaml-1.1.0}/PKG-INFO +78 -34
- {pyiaml-1.0.1 → pyiaml-1.1.0}/PyIAML.egg-info/PKG-INFO +78 -34
- {pyiaml-1.0.1 → pyiaml-1.1.0}/PyIAML.egg-info/SOURCES.txt +11 -0
- pyiaml-1.1.0/README.md +129 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/pyproject.toml +1 -1
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_mice.py +94 -72
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_selection/act_permutation_importance_selector.py +86 -3
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/act_smote.py +4 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/act_smote_tomek.py +3 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/act_smoteenn.py +6 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/normalize/__init__.py +1 -1
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/normalize/act_max_abs_scaler.py +1 -1
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/normalize/act_minmax_scaler.py +1 -1
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/normalize/act_normalizer.py +11 -7
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_catboost_classifier.py +54 -31
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_hist_gradient_boosting_classifier.py +3 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_linear_svc.py +3 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_passive_aggressive_classifier.py +3 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_ridge_classifier.py +3 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_sgd_classifier.py +3 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_svm_svc.py +9 -1
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_catboost_regressor.py +41 -35
- pyiaml-1.1.0/src/iaml/actionables/predictors/survival/_survival_forest.py +75 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_aalen_additive_model.py +8 -2
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_extra_survival_trees.py +23 -11
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_random_survival_forest.py +27 -10
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_weibull_aft.py +42 -30
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/candidate.py +173 -51
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/decorators/runner.py +5 -1
- pyiaml-1.1.0/src/iaml/explainers.py +29 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/explanation.py +3 -1
- pyiaml-1.1.0/src/iaml/flow/__init__.py +14 -0
- pyiaml-1.1.0/src/iaml/flow/compiler.py +255 -0
- pyiaml-1.1.0/src/iaml/flow/inspection.py +311 -0
- pyiaml-1.1.0/src/iaml/flow/model.py +673 -0
- pyiaml-1.1.0/src/iaml/flow/parameters.py +91 -0
- pyiaml-1.1.0/src/iaml/iaml.py +1587 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/iaml_pipeline.py +58 -10
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/meta_explorer_step.py +6 -1
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metastep.py +6 -1
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/roc_auc_metric.py +18 -2
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/optimizers/bayesian_optimizer.py +65 -49
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/optimizers/genetic_optimizer.py +18 -8
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/optimizers/optimizer.py +1 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/optimizers/random_optimizer.py +29 -32
- pyiaml-1.1.0/src/iaml/plots/_classification.py +40 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/box_plot.py +6 -6
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/cumulative_hazard_plot.py +3 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/kaplan_meier_comparison_plot.py +3 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/precision_recall_curve_plot.py +9 -12
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/roc_dynamique_curve_plot.py +3 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/rocauc_plot.py +9 -20
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/shap_plot.py +6 -2
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/predictor.py +11 -4
- pyiaml-1.1.0/src/iaml/search_policy.py +106 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/shared_cache.py +18 -10
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/splitters/kfold_splitter.py +2 -2
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/step.py +8 -2
- pyiaml-1.1.0/src/iaml/steps.py +21 -0
- pyiaml-1.1.0/src/iaml/study_analyses.py +229 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/timed_pool_executor.py +187 -110
- pyiaml-1.0.1/README.md +0 -85
- pyiaml-1.0.1/src/iaml/iaml.py +0 -1072
- {pyiaml-1.0.1 → pyiaml-1.1.0}/LICENSE +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/MANIFEST.in +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/PyIAML.egg-info/dependency_links.txt +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/PyIAML.egg-info/requires.txt +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/PyIAML.egg-info/top_level.txt +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/setup.cfg +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/__init__.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionable.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/__init__.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/boosting/__init__.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/boosting/act_adaboost.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/__init__.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_categorical_imputer.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_count_vectorizer.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_drop_categorical_column.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_drop_date_column.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_drop_high_cardinality_categorical.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_drop_numerical_column.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_drop_textual_column.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_encode_target_column.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_frequency_encoder.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_hashing_vectorizer.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_knn_imputer.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_mean_column.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_missing_count_feature.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_missing_indicator.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_onehot.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_ordinal_encoder.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_rare_category_grouper.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_simple_imputer.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_split_date.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_target_encoder.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_text_normalizer.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_tf_idf.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/cleaning/act_word2vec.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/__init__.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/act_coerce_numeric_strings.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/act_date_converter.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/act_drop_bad_quality_rows.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/act_drop_duplicate_rows.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/act_drop_high_missing_columns.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/act_drop_id_like_columns.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/act_normalize_column_names.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/act_sentinel_to_na_n.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_precleaning/act_trim_space.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/__init__.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_cyclical_date_encoding.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_fast_ica.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_feature_agglomeration.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_k_bins_discretizer.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_k_means_features.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_kernel_pca.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_log_transformer.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_nystroem.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_pca.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_polynomial_features.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_power_transformer.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_quantile_transformer.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_rbf_sampler.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_select_percentile.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_sparse_random_projection.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_preprocessing/act_truncated_svd.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_selection/__init__.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_selection/act_remove_high_correlated_column.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_selection/act_remove_low_variance_column.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_selection/act_rfe.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_selection/act_select_from_model.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_selection/act_select_k_best.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/features_selection/act_vif_selector.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/__init__.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/act_adasyn.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/act_borderline_smote.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/act_near_miss.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/act_random_over_sampling.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/act_random_under_sampler.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/imbalance/act_tomek_links.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/normalize/act_robust_scaler.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/normalize/act_standard_scaler.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/__init__.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/_xgboost.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/__init__.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_bagging_classifier.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_bernoulli_nb.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_complement_nb.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_decision_tree_classifier.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_extra_trees_classifier.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_gaussian_nb.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_knn.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_light_gbm_classifier.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_linear_discriminant_analysis.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_logistic_regression.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_mlp_classifier.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_multinomial_nb.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_quadratic_discriminant_analysis.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_randomforest.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/classifier/act_xgboost.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/__init__.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_ada_boost_regressor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_ard_regression.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_decision_tree_regressor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_elastic_net_regressor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_extra_trees_regressor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_gaussian_process_regressor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_gboost_regressor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_hist_gradient_boosting_regressor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_huber_regressor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_knn_regressor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_lasso_regressor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_light_gbm_regressor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_linear_regression.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_mlp_regressor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_poisson_regressor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_quantile_regressor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_randomforest_regressor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_ransac_regressor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_ridge_regressor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_sgd_regressor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_svm_svr.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/regressor/act_xgboost_regressor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/__init__.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_cox.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_coxnet_survival_analysis.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_fast_survival_svm.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_gradient_boosting_survival_analysis.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_survival_component_wise_gboost.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_survival_tree.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/actionables/predictors/survival/act_survival_xgboost.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/cache.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/cache_keys.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/core_dispatcher.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/data_type.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/dataset.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/decorators/__init__.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/decorators/all.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/decorators/is_step.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/logger.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/meta_ordered_step.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/meta_partial_explorer_step.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/meta_singleton.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metric.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metric_plot.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/__init__.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/_classification.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/_survival_times.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/accuracy_metric.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/balanced_accuracy_metric.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/brier_score.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/classification_error_metric.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/concordance_index_ipcw.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/concordance_index_metric.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/cumulative_dynamic_auc.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/f1_score_metric.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/integrated_brier_score.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/integrated_brier_score_loss.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/mean_absolute_error_metric.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/mean_squared_error_metric.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/mean_squared_log_error_metric.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/median_absolute_error_metric.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/precision_metric.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/r2_score_metric.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/recall_metric.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/specificity_metric.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/specificity_multiclass_metric.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/metrics/specificity_multilabel_metric.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/optimizers/__init__.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plot.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/__init__.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/bar_plot.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/class_prediction_error_plot.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/classification_report_plot.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/confusion_matrix_plot.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/correlation_heatmap_plot.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/density_plot.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/histogram_plot.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/line_plot.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/missingness_heatmap_plot.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/outlier_plot.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/pair_plot.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/prediction_error_plot.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/qq_plot.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/residual_plot.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/target_distribution_plot.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/plots/violin_plot.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/reference.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/sklearn_preprocessor.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/splitters/__init__.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/splitters/random_splitter.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/stack.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/__init__.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/anova_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/cardinality_ratio_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/category_cooccurrence_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/chi_square_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/coef_variation_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/correlation_with_target.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/count.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/data_type_summary_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/duplicate_row_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/effect_size_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/entropy_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/event_rate_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/grouped_mean_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/iqr_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/kurtosis.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/mad_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/mean.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/median_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/minmax.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/missing_rate_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/mode.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/most_frequent_ratio.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/outlier_count_iqr_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/quantile.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/range.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/rare_category_rate.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/skewness.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/stdev.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/summary_table_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/time_by_group_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/time_summary_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/top_k_value_counts.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/unique_count_statistic.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/value_counts.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/variance.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/statistics/violin.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/step_cache.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/step_wrapper.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/type_of_target.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/void_step.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/worker_manager.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/wrapper/__init__.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/wrapper/wrap_basic_gridsearch.py +0 -0
- {pyiaml-1.0.1 → pyiaml-1.1.0}/src/iaml/wrapper/wrap_genetic_gridsearch.py +0 -0
- {pyiaml-1.0.1 → 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
|
|
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
|
-
|
|
717
|
-
|
|
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
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
The
|
|
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
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
782
|
-
|
|
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
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
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
|
|
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
|
-
|
|
717
|
-
|
|
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
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
The
|
|
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
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
782
|
-
|
|
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
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
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
|