ins-pricing 0.1.8__tar.gz → 0.1.11__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 (175) hide show
  1. {ins_pricing-0.1.8/Ins_Pricing.egg-info → ins_pricing-0.1.11}/PKG-INFO +1 -1
  2. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/BayesOpt_entry.py +51 -14
  3. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/BayesOpt_incremental.py +46 -6
  4. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/bayesopt/core.py +80 -7
  5. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/bayesopt/trainers.py +3 -3
  6. {ins_pricing-0.1.8/ins_pricing_gemini → ins_pricing-0.1.11/ins_pricing}/modelling/plotting/diagnostics.py +24 -0
  7. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/setup.py +1 -1
  8. {ins_pricing-0.1.8 → ins_pricing-0.1.11/ins_pricing.egg-info}/PKG-INFO +1 -1
  9. {ins_pricing-0.1.8/Ins_Pricing.egg-info → ins_pricing-0.1.11/ins_pricing.egg-info}/SOURCES.txt +0 -5
  10. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/pyproject.toml +1 -1
  11. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/MANIFEST.in +0 -0
  12. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/README.md +0 -0
  13. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/README.md +0 -0
  14. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/__init__.py +0 -0
  15. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/governance/README.md +0 -0
  16. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/governance/__init__.py +0 -0
  17. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/governance/approval.py +0 -0
  18. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/governance/audit.py +0 -0
  19. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/governance/registry.py +0 -0
  20. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/governance/release.py +0 -0
  21. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/BayesOpt.py +0 -0
  22. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/BayesOpt_USAGE.md +0 -0
  23. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/Explain_Run.py +0 -0
  24. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/Explain_entry.py +0 -0
  25. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/Pricing_Run.py +0 -0
  26. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/README.md +0 -0
  27. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/__init__.py +0 -0
  28. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/bayesopt/__init__.py +0 -0
  29. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/bayesopt/config_preprocess.py +0 -0
  30. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/bayesopt/models.py +0 -0
  31. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/bayesopt/utils.py +0 -0
  32. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/cli_common.py +0 -0
  33. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/explain/__init__.py +0 -0
  34. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/explain/gradients.py +0 -0
  35. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/explain/metrics.py +0 -0
  36. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/explain/permutation.py +0 -0
  37. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/explain/shap_utils.py +0 -0
  38. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/notebook_utils.py +0 -0
  39. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/plotting/__init__.py +0 -0
  40. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/plotting/common.py +0 -0
  41. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/plotting/curves.py +0 -0
  42. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/plotting/geo.py +0 -0
  43. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/plotting/importance.py +0 -0
  44. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/run_logging.py +0 -0
  45. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/tests/conftest.py +0 -0
  46. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/tests/test_cross_val_generic.py +0 -0
  47. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/tests/test_distributed_utils.py +0 -0
  48. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/tests/test_explain.py +0 -0
  49. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/tests/test_geo_tokens_split.py +0 -0
  50. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/tests/test_graph_cache.py +0 -0
  51. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/tests/test_plotting.py +0 -0
  52. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/tests/test_plotting_library.py +0 -0
  53. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/tests/test_preprocessor.py +0 -0
  54. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/modelling/watchdog_run.py +0 -0
  55. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/pricing/README.md +0 -0
  56. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/pricing/__init__.py +0 -0
  57. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/pricing/calibration.py +0 -0
  58. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/pricing/data_quality.py +0 -0
  59. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/pricing/exposure.py +0 -0
  60. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/pricing/factors.py +0 -0
  61. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/pricing/monitoring.py +0 -0
  62. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/pricing/rate_table.py +0 -0
  63. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/production/__init__.py +0 -0
  64. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/production/drift.py +0 -0
  65. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/production/monitoring.py +0 -0
  66. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/production/scoring.py +0 -0
  67. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/reporting/README.md +0 -0
  68. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/reporting/__init__.py +0 -0
  69. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/reporting/report_builder.py +0 -0
  70. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing/reporting/scheduler.py +0 -0
  71. {ins_pricing-0.1.8/Ins_Pricing.egg-info → ins_pricing-0.1.11/ins_pricing.egg-info}/dependency_links.txt +0 -0
  72. {ins_pricing-0.1.8/Ins_Pricing.egg-info → ins_pricing-0.1.11/ins_pricing.egg-info}/requires.txt +0 -0
  73. {ins_pricing-0.1.8/Ins_Pricing.egg-info → ins_pricing-0.1.11/ins_pricing.egg-info}/top_level.txt +0 -0
  74. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/__init__.py +0 -0
  75. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/governance/__init__.py +0 -0
  76. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/governance/approval.py +0 -0
  77. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/governance/audit.py +0 -0
  78. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/governance/registry.py +0 -0
  79. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/governance/release.py +0 -0
  80. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/Explain_Run.py +0 -0
  81. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/Pricing_Run.py +0 -0
  82. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/__init__.py +0 -0
  83. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/cli_common.py +0 -0
  84. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/config.py +0 -0
  85. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/config_preprocess.py +0 -0
  86. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/core.py +0 -0
  87. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/data_container.py +0 -0
  88. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/explain/__init__.py +0 -0
  89. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/explain/gradients.py +0 -0
  90. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/explain/metrics.py +0 -0
  91. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/explain/permutation.py +0 -0
  92. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/explain/shap_utils.py +0 -0
  93. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/features.py +0 -0
  94. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/model_manager.py +0 -0
  95. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/model_plotting.py +0 -0
  96. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/models.py +0 -0
  97. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/notebook_utils.py +0 -0
  98. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/plotting/__init__.py +0 -0
  99. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/plotting/common.py +0 -0
  100. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/plotting/curves.py +0 -0
  101. {ins_pricing-0.1.8/ins_pricing → ins_pricing-0.1.11/ins_pricing_gemini}/modelling/plotting/diagnostics.py +0 -0
  102. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/plotting/geo.py +0 -0
  103. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/plotting/importance.py +0 -0
  104. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/run_logging.py +0 -0
  105. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/tests/conftest.py +0 -0
  106. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/tests/test_cross_val_generic.py +0 -0
  107. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/tests/test_distributed_utils.py +0 -0
  108. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/tests/test_explain.py +0 -0
  109. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/tests/test_geo_tokens_split.py +0 -0
  110. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/tests/test_graph_cache.py +0 -0
  111. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/tests/test_plotting.py +0 -0
  112. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/tests/test_plotting_library.py +0 -0
  113. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/tests/test_preprocessor.py +0 -0
  114. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/trainers.py +0 -0
  115. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/utils.py +0 -0
  116. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/modelling/watchdog_run.py +0 -0
  117. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/pricing/__init__.py +0 -0
  118. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/pricing/calibration.py +0 -0
  119. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/pricing/data_quality.py +0 -0
  120. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/pricing/exposure.py +0 -0
  121. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/pricing/factors.py +0 -0
  122. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/pricing/monitoring.py +0 -0
  123. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/pricing/rate_table.py +0 -0
  124. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/production/__init__.py +0 -0
  125. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/production/drift.py +0 -0
  126. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/production/monitoring.py +0 -0
  127. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/production/scoring.py +0 -0
  128. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/reporting/__init__.py +0 -0
  129. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/reporting/report_builder.py +0 -0
  130. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/reporting/scheduler.py +0 -0
  131. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/scripts/BayesOpt_incremental.py +0 -0
  132. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/scripts/Explain_entry.py +0 -0
  133. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/scripts/__init__.py +0 -0
  134. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/scripts/train.py +0 -0
  135. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/setup.py +0 -0
  136. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/ins_pricing_gemini/smoke_test.py +0 -0
  137. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/setup.cfg +0 -0
  138. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages/__init__.py +0 -0
  139. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/BayesOpt.py +0 -0
  140. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/BayesOpt_entry.py +0 -0
  141. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/BayesOpt_incremental.py +0 -0
  142. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Pricing_Run.py +0 -0
  143. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOpt Legacy251213.py +0 -0
  144. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOpt Legacy251215.py +0 -0
  145. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOpt lagecy251201.py +0 -0
  146. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOpt lagecy251218.py +0 -0
  147. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOpt legacy.py +0 -0
  148. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOpt.py +0 -0
  149. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOptAll.py +0 -0
  150. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOptAllPlatform.py +0 -0
  151. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOptCPUGPU.py +0 -0
  152. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOptSearch.py +0 -0
  153. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOptSearchOrigin.py +0 -0
  154. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOptV1.py +0 -0
  155. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOptV10.py +0 -0
  156. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOptV11.py +0 -0
  157. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOptV12.py +0 -0
  158. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOptV2.py +0 -0
  159. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOptV3.py +0 -0
  160. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOptV4.py +0 -0
  161. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOptV5.py +0 -0
  162. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOptV6.py +0 -0
  163. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOptV7.py +0 -0
  164. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOptV8Codex.py +0 -0
  165. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOptV8Gemini.py +0 -0
  166. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOptV9.py +0 -0
  167. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/BayesOpt_entry legacy.py +0 -0
  168. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/ModelBayesOptSearch.py +0 -0
  169. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/ResNetBayesOptSearch.py +0 -0
  170. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/XgbBayesOptSearch.py +0 -0
  171. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/Try/xgbbayesopt.py +0 -0
  172. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/__init__.py +0 -0
  173. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/cli_common.py +0 -0
  174. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/notebook_utils.py +0 -0
  175. {ins_pricing-0.1.8 → ins_pricing-0.1.11}/user_packages legacy/watchdog_run.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ins_pricing
3
- Version: 0.1.8
3
+ Version: 0.1.11
4
4
  Summary: Reusable modelling, pricing, governance, and reporting utilities.
5
5
  Author: meishi125478
6
6
  License: Proprietary
@@ -250,22 +250,46 @@ def _plot_curves_for_model(model: ropt.BayesOptModel, trained_keys: List[str], c
250
250
  [m for m in trained_keys if m in PLOT_MODEL_LABELS]
251
251
  )
252
252
 
253
- if oneway_enabled:
254
- model.plot_oneway(n_bins=n_bins)
255
-
256
- if not available_models:
257
- return
258
-
259
253
  lift_models = plot_cfg.get("lift_models")
260
254
  if lift_models is None:
261
- lift_models = [
262
- m for m, enabled in legacy_lift_flags.items() if enabled]
255
+ lift_models = [m for m, enabled in legacy_lift_flags.items() if enabled]
263
256
  if not lift_models:
264
257
  lift_models = available_models
265
258
  lift_models = dedupe_preserve_order(
266
259
  [m for m in lift_models if m in available_models]
267
260
  )
268
261
 
262
+ if oneway_enabled:
263
+ oneway_pred = bool(plot_cfg.get("oneway_pred", False))
264
+ oneway_pred_models = plot_cfg.get("oneway_pred_models")
265
+ pred_plotted = False
266
+ if oneway_pred:
267
+ if oneway_pred_models is None:
268
+ oneway_pred_models = lift_models or available_models
269
+ oneway_pred_models = dedupe_preserve_order(
270
+ [m for m in oneway_pred_models if m in available_models]
271
+ )
272
+ for model_key in oneway_pred_models:
273
+ label, pred_nme = PLOT_MODEL_LABELS[model_key]
274
+ if pred_nme not in model.train_data.columns:
275
+ print(
276
+ f"[Oneway] Missing prediction column '{pred_nme}'; skip.",
277
+ flush=True,
278
+ )
279
+ continue
280
+ model.plot_oneway(
281
+ n_bins=n_bins,
282
+ pred_col=pred_nme,
283
+ pred_label=label,
284
+ plot_subdir="oneway/post",
285
+ )
286
+ pred_plotted = True
287
+ if not oneway_pred or not pred_plotted:
288
+ model.plot_oneway(n_bins=n_bins, plot_subdir="oneway/post")
289
+
290
+ if not available_models:
291
+ return
292
+
269
293
  for model_key in lift_models:
270
294
  label, pred_nme = PLOT_MODEL_LABELS[model_key]
271
295
  model.plot_lift(model_label=label, pred_nme=pred_nme, n_bins=n_bins)
@@ -302,10 +326,10 @@ def _plot_loss_curve_for_trainer(model_name: str, trainer) -> None:
302
326
  return
303
327
  try:
304
328
  plot_dir = trainer.output.plot_path(
305
- f"loss_{model_name}_{trainer.model_name_prefix}.png"
329
+ f"{model_name}/loss/loss_{model_name}_{trainer.model_name_prefix}.png"
306
330
  )
307
331
  except Exception:
308
- default_dir = Path("plot")
332
+ default_dir = Path("plot") / model_name / "loss"
309
333
  default_dir.mkdir(parents=True, exist_ok=True)
310
334
  plot_dir = str(
311
335
  default_dir / f"loss_{model_name}_{trainer.model_name_prefix}.png")
@@ -504,6 +528,19 @@ def train_from_config(args: argparse.Namespace) -> None:
504
528
  reuse_best_params=reuse_best_params,
505
529
  )
506
530
 
531
+ if plot_requested:
532
+ plot_cfg = cfg.get("plot", {})
533
+ legacy_lift_flags = {
534
+ "glm": cfg.get("plot_lift_glm", False),
535
+ "xgb": cfg.get("plot_lift_xgb", False),
536
+ "resn": cfg.get("plot_lift_resn", False),
537
+ "ft": cfg.get("plot_lift_ft", False),
538
+ }
539
+ plot_enabled = plot_cfg.get("enable", any(legacy_lift_flags.values()))
540
+ if plot_enabled and plot_cfg.get("pre_oneway", False) and plot_cfg.get("oneway", True):
541
+ n_bins = int(plot_cfg.get("n_bins", 10))
542
+ model.plot_oneway(n_bins=n_bins, plot_subdir="oneway/pre")
543
+
507
544
  if "all" in args.model_keys:
508
545
  requested_keys = ["glm", "xgb", "resn", "ft", "gnn"]
509
546
  else:
@@ -547,14 +584,14 @@ def train_from_config(args: argparse.Namespace) -> None:
547
584
  trainer = model.trainers[key]
548
585
  trainer_uses_ddp = bool(
549
586
  getattr(trainer, "enable_distributed_optuna", False))
550
- should_run = True
551
587
  if dist_active and not trainer_uses_ddp:
552
- should_run = dist_rank == 0
553
- if not should_run:
588
+ if dist_rank != 0:
554
589
  print(
555
590
  f"[Rank {dist_rank}] Skip {model_name}/{key} because trainer is not DDP-enabled."
556
591
  )
557
- _ddp_barrier(f"skip_non_ddp_{model_name}_{key}")
592
+ _ddp_barrier(f"start_non_ddp_{model_name}_{key}")
593
+ if dist_rank != 0:
594
+ _ddp_barrier(f"finish_non_ddp_{model_name}_{key}")
558
595
  continue
559
596
 
560
597
  print(
@@ -285,16 +285,43 @@ def _plot_curves_for_model(model: ropt.BayesOptModel, trained: List[str], cfg: D
285
285
  oneway_enabled = plot_cfg.get("oneway", True)
286
286
  available = dedupe_preserve_order([k for k in trained if k in PLOT_MODEL_LABELS])
287
287
 
288
- if oneway_enabled:
289
- model.plot_oneway(n_bins=n_bins)
290
- if not available:
291
- return
292
-
293
288
  lift_models = plot_cfg.get("lift_models")
294
289
  if lift_models is None:
295
- lift_models = [m for m, flag in legacy_flags.items() if flag] or available
290
+ lift_models = [m for m, flag in legacy_flags.items() if flag]
291
+ if not lift_models:
292
+ lift_models = available
296
293
  lift_models = dedupe_preserve_order([m for m in lift_models if m in available])
297
294
 
295
+ if oneway_enabled:
296
+ oneway_pred = bool(plot_cfg.get("oneway_pred", False))
297
+ oneway_pred_models = plot_cfg.get("oneway_pred_models")
298
+ pred_plotted = False
299
+ if oneway_pred:
300
+ if oneway_pred_models is None:
301
+ oneway_pred_models = lift_models or available
302
+ oneway_pred_models = dedupe_preserve_order(
303
+ [m for m in oneway_pred_models if m in available]
304
+ )
305
+ for model_key in oneway_pred_models:
306
+ label, pred_nme = PLOT_MODEL_LABELS[model_key]
307
+ if pred_nme not in model.train_data.columns:
308
+ print(
309
+ f"[Oneway] Missing prediction column '{pred_nme}'; skip.",
310
+ flush=True,
311
+ )
312
+ continue
313
+ model.plot_oneway(
314
+ n_bins=n_bins,
315
+ pred_col=pred_nme,
316
+ pred_label=label,
317
+ plot_subdir="oneway/post",
318
+ )
319
+ pred_plotted = True
320
+ if not oneway_pred or not pred_plotted:
321
+ model.plot_oneway(n_bins=n_bins, plot_subdir="oneway/post")
322
+ if not available:
323
+ return
324
+
298
325
  for key in lift_models:
299
326
  label, pred_nme = PLOT_MODEL_LABELS[key]
300
327
  model.plot_lift(model_label=label, pred_nme=pred_nme, n_bins=n_bins)
@@ -558,6 +585,19 @@ class IncrementalUpdateRunner:
558
585
  infer_categorical_max_ratio=float(self.cfg.get("infer_categorical_max_ratio", 0.05)),
559
586
  )
560
587
 
588
+ if self.plot_requested and not self.args.dry_run:
589
+ plot_cfg = self.cfg.get("plot", {})
590
+ legacy_flags = {
591
+ "glm": self.cfg.get("plot_lift_glm", False),
592
+ "xgb": self.cfg.get("plot_lift_xgb", False),
593
+ "resn": self.cfg.get("plot_lift_resn", False),
594
+ "ft": self.cfg.get("plot_lift_ft", False),
595
+ }
596
+ plot_enabled = plot_cfg.get("enable", any(legacy_flags.values()))
597
+ if plot_enabled and plot_cfg.get("pre_oneway", False) and plot_cfg.get("oneway", True):
598
+ n_bins = int(plot_cfg.get("n_bins", 10))
599
+ model.plot_oneway(n_bins=n_bins, plot_subdir="oneway/pre")
600
+
561
601
  requested_keys = self._requested_model_keys(model.trainers)
562
602
  executed_keys: List[str] = []
563
603
  param_sources: Dict[str, str] = {}
@@ -474,10 +474,39 @@ class BayesOptModel:
474
474
  ]
475
475
 
476
476
  # Single-factor plotting helper.
477
- def plot_oneway(self, n_bins=10):
477
+ def plot_oneway(
478
+ self,
479
+ n_bins=10,
480
+ pred_col: Optional[str] = None,
481
+ pred_label: Optional[str] = None,
482
+ pred_weighted: Optional[bool] = None,
483
+ plot_subdir: Optional[str] = None,
484
+ ):
478
485
  if plt is None and plot_diagnostics is None:
479
486
  _plot_skip("oneway plot")
480
487
  return
488
+ if pred_col is not None and pred_col not in self.train_data.columns:
489
+ print(
490
+ f"[Oneway] Missing prediction column '{pred_col}'; skip predicted line.",
491
+ flush=True,
492
+ )
493
+ pred_col = None
494
+ if pred_weighted is None and pred_col is not None:
495
+ pred_weighted = pred_col.startswith("w_pred_")
496
+ if pred_weighted is None:
497
+ pred_weighted = False
498
+ plot_subdir = plot_subdir.strip("/\\") if plot_subdir else "oneway"
499
+ plot_prefix = f"{self.model_nme}/{plot_subdir}"
500
+
501
+ def _safe_tag(value: str) -> str:
502
+ return (
503
+ value.strip()
504
+ .replace(" ", "_")
505
+ .replace("/", "_")
506
+ .replace("\\", "_")
507
+ .replace(":", "_")
508
+ )
509
+
481
510
  if plot_diagnostics is None:
482
511
  for c in self.factor_nmes:
483
512
  fig = plt.figure(figsize=(7, 5))
@@ -492,14 +521,32 @@ class BayesOptModel:
492
521
  duplicates='drop' # Drop duplicate quantiles to avoid errors.
493
522
  )
494
523
  plot_source = self.train_data.assign(**{group_col: bins})
524
+ if pred_col is not None and pred_col in plot_source.columns:
525
+ if pred_weighted:
526
+ plot_source = plot_source.assign(
527
+ _pred_w=plot_source[pred_col]
528
+ )
529
+ else:
530
+ plot_source = plot_source.assign(
531
+ _pred_w=plot_source[pred_col] * plot_source[self.weight_nme]
532
+ )
495
533
  plot_data = plot_source.groupby(
496
534
  [group_col], observed=True).sum(numeric_only=True)
497
535
  plot_data.reset_index(inplace=True)
498
536
  plot_data['act_v'] = plot_data['w_act'] / \
499
537
  plot_data[self.weight_nme]
538
+ if pred_col is not None and "_pred_w" in plot_data.columns:
539
+ plot_data["pred_v"] = plot_data["_pred_w"] / plot_data[self.weight_nme]
500
540
  ax = fig.add_subplot(111)
501
541
  ax.plot(plot_data.index, plot_data['act_v'],
502
542
  label='Actual', color='red')
543
+ if pred_col is not None and "pred_v" in plot_data.columns:
544
+ ax.plot(
545
+ plot_data.index,
546
+ plot_data["pred_v"],
547
+ label=pred_label or "Predicted",
548
+ color="tab:blue",
549
+ )
503
550
  ax.set_title(
504
551
  'Analysis of %s : Train Data' % group_col,
505
552
  fontsize=8)
@@ -518,8 +565,15 @@ class BayesOptModel:
518
565
  plt.yticks(fontsize=6)
519
566
  plt.margins(0.05)
520
567
  plt.subplots_adjust(wspace=0.3)
568
+ if pred_col is not None and "pred_v" in plot_data.columns:
569
+ ax.legend(fontsize=6)
570
+ pred_tag = _safe_tag(pred_label or pred_col) if pred_col else None
571
+ if pred_tag:
572
+ filename = f'00_{self.model_nme}_{group_col}_oneway_{pred_tag}.png'
573
+ else:
574
+ filename = f'00_{self.model_nme}_{group_col}_oneway.png'
521
575
  save_path = self.output_manager.plot_path(
522
- f'00_{self.model_nme}_{group_col}_oneway.png')
576
+ f'{plot_prefix}/{filename}')
523
577
  plt.savefig(save_path, dpi=300)
524
578
  plt.close(fig)
525
579
  return
@@ -532,14 +586,22 @@ class BayesOptModel:
532
586
  is_cat = c in (self.cate_list or [])
533
587
  group_col = c if is_cat else f"{c}_bins"
534
588
  title = f"Analysis of {group_col} : Train Data"
589
+ pred_tag = _safe_tag(pred_label or pred_col) if pred_col else None
590
+ if pred_tag:
591
+ filename = f"00_{self.model_nme}_{group_col}_oneway_{pred_tag}.png"
592
+ else:
593
+ filename = f"00_{self.model_nme}_{group_col}_oneway.png"
535
594
  save_path = self.output_manager.plot_path(
536
- f"00_{self.model_nme}_{group_col}_oneway.png"
595
+ f"{plot_prefix}/{filename}"
537
596
  )
538
597
  plot_diagnostics.plot_oneway(
539
598
  self.train_data,
540
599
  feature=c,
541
600
  weight_col=self.weight_nme,
542
601
  target_col="w_act",
602
+ pred_col=pred_col,
603
+ pred_weighted=pred_weighted,
604
+ pred_label=pred_label,
543
605
  n_bins=n_bins,
544
606
  is_categorical=is_cat,
545
607
  title=title,
@@ -855,6 +917,15 @@ class BayesOptModel:
855
917
  if model_label.startswith(k):
856
918
  pred_nme = v
857
919
  break
920
+ safe_label = (
921
+ str(model_label)
922
+ .replace(" ", "_")
923
+ .replace("/", "_")
924
+ .replace("\\", "_")
925
+ .replace(":", "_")
926
+ )
927
+ plot_prefix = f"{self.model_nme}/lift"
928
+ filename = f"01_{self.model_nme}_{safe_label}_lift.png"
858
929
 
859
930
  datasets = []
860
931
  for title, data in [
@@ -900,7 +971,7 @@ class BayesOptModel:
900
971
 
901
972
  plt.subplots_adjust(wspace=0.3)
902
973
  save_path = self.output_manager.plot_path(
903
- f'01_{self.model_nme}_{model_label}_lift.png')
974
+ f"{plot_prefix}/{filename}")
904
975
  plt.savefig(save_path, dpi=300)
905
976
  plt.show()
906
977
  plt.close(fig)
@@ -945,7 +1016,7 @@ class BayesOptModel:
945
1016
 
946
1017
  plt.subplots_adjust(wspace=0.3)
947
1018
  save_path = self.output_manager.plot_path(
948
- f'01_{self.model_nme}_{model_label}_lift.png')
1019
+ f"{plot_prefix}/{filename}")
949
1020
  if finalize_figure:
950
1021
  finalize_figure(fig, save_path=save_path, show=True, style=style)
951
1022
  else:
@@ -977,6 +1048,8 @@ class BayesOptModel:
977
1048
  name1, name2 = model_comp
978
1049
  if name1 not in model_name_map or name2 not in model_name_map:
979
1050
  raise ValueError(f"Unsupported model key. Choose from {list(model_name_map.keys())}.")
1051
+ plot_prefix = f"{self.model_nme}/double_lift"
1052
+ filename = f"02_{self.model_nme}_dlift_{name1}_vs_{name2}.png"
980
1053
 
981
1054
  datasets = []
982
1055
  for data_name, data in [('Train Data', self.train_data),
@@ -1030,7 +1103,7 @@ class BayesOptModel:
1030
1103
 
1031
1104
  plt.subplots_adjust(bottom=0.25, top=0.95, right=0.8, wspace=0.3)
1032
1105
  save_path = self.output_manager.plot_path(
1033
- f'02_{self.model_nme}_dlift_{name1}_vs_{name2}.png')
1106
+ f"{plot_prefix}/{filename}")
1034
1107
  plt.savefig(save_path, dpi=300)
1035
1108
  plt.show()
1036
1109
  plt.close(fig)
@@ -1089,7 +1162,7 @@ class BayesOptModel:
1089
1162
 
1090
1163
  plt.subplots_adjust(bottom=0.25, top=0.95, right=0.8, wspace=0.3)
1091
1164
  save_path = self.output_manager.plot_path(
1092
- f'02_{self.model_nme}_dlift_{name1}_vs_{name2}.png')
1165
+ f"{plot_prefix}/{filename}")
1093
1166
  if finalize_figure:
1094
1167
  finalize_figure(fig, save_path=save_path, show=True, style=style)
1095
1168
  else:
@@ -1733,7 +1733,7 @@ class ResNetTrainer(TrainerBase):
1733
1733
  self.model.epochs = int(refit_epochs)
1734
1734
  self.best_params = params
1735
1735
  loss_plot_path = self.output.plot_path(
1736
- f'loss_{self.ctx.model_nme}_{self.model_name_prefix}.png')
1736
+ f'{self.ctx.model_nme}/loss/loss_{self.ctx.model_nme}_{self.model_name_prefix}.png')
1737
1737
  self.model.loss_curve_path = loss_plot_path
1738
1738
 
1739
1739
  self._fit_predict_cache(
@@ -2190,7 +2190,7 @@ class FTTrainer(TrainerBase):
2190
2190
  self.model.set_params(resolved_params)
2191
2191
  self.best_params = resolved_params
2192
2192
  loss_plot_path = self.output.plot_path(
2193
- f'loss_{self.ctx.model_nme}_{self.model_name_prefix}.png')
2193
+ f'{self.ctx.model_nme}/loss/loss_{self.ctx.model_nme}_{self.model_name_prefix}.png')
2194
2194
  self.model.loss_curve_path = loss_plot_path
2195
2195
  geo_train = self.ctx.train_geo_tokens
2196
2196
  geo_test = self.ctx.test_geo_tokens
@@ -2395,7 +2395,7 @@ class FTTrainer(TrainerBase):
2395
2395
  self.model.set_params(resolved_params)
2396
2396
 
2397
2397
  loss_plot_path = self.output.plot_path(
2398
- f'loss_{self.ctx.model_nme}_FTTransformerUnsupervised.png')
2398
+ f'{self.ctx.model_nme}/loss/loss_{self.ctx.model_nme}_FTTransformerUnsupervised.png')
2399
2399
  self.model.loss_curve_path = loss_plot_path
2400
2400
 
2401
2401
  # Build a simple holdout split for pretraining early stopping.
@@ -72,6 +72,9 @@ def plot_oneway(
72
72
  feature: str,
73
73
  weight_col: str,
74
74
  target_col: str,
75
+ pred_col: Optional[str] = None,
76
+ pred_weighted: bool = False,
77
+ pred_label: Optional[str] = None,
75
78
  n_bins: int = 10,
76
79
  is_categorical: bool = False,
77
80
  title: Optional[str] = None,
@@ -86,6 +89,8 @@ def plot_oneway(
86
89
  raise KeyError(f"weight_col '{weight_col}' not found in data.")
87
90
  if target_col not in df.columns:
88
91
  raise KeyError(f"target_col '{target_col}' not found in data.")
92
+ if pred_col is not None and pred_col not in df.columns:
93
+ raise KeyError(f"pred_col '{pred_col}' not found in data.")
89
94
 
90
95
  style = style or PlotStyle()
91
96
  title = title or f"Analysis of {feature}"
@@ -102,11 +107,21 @@ def plot_oneway(
102
107
  bins = pd.cut(series, bins=max(1, int(n_bins)), duplicates="drop")
103
108
  plot_source = df.assign(**{group_col: bins})
104
109
 
110
+ if pred_col is not None:
111
+ if pred_weighted:
112
+ plot_source = plot_source.assign(_pred_w=plot_source[pred_col])
113
+ else:
114
+ plot_source = plot_source.assign(
115
+ _pred_w=plot_source[pred_col] * plot_source[weight_col]
116
+ )
117
+
105
118
  plot_data = plot_source.groupby([group_col], observed=True).sum(numeric_only=True)
106
119
  plot_data.reset_index(inplace=True)
107
120
 
108
121
  denom = np.maximum(plot_data[weight_col].to_numpy(dtype=float), EPS)
109
122
  plot_data["act_v"] = plot_data[target_col].to_numpy(dtype=float) / denom
123
+ if pred_col is not None:
124
+ plot_data["pred_v"] = plot_data["_pred_w"].to_numpy(dtype=float) / denom
110
125
 
111
126
  created_fig = ax is None
112
127
  if created_fig:
@@ -115,6 +130,13 @@ def plot_oneway(
115
130
  fig = ax.figure
116
131
 
117
132
  ax.plot(plot_data.index, plot_data["act_v"], label="Actual", color="red")
133
+ if pred_col is not None:
134
+ ax.plot(
135
+ plot_data.index,
136
+ plot_data["pred_v"],
137
+ label=pred_label or "Predicted",
138
+ color=style.palette[0],
139
+ )
118
140
  ax.set_title(title, fontsize=style.title_size)
119
141
  ax.set_xticks(plot_data.index)
120
142
  labels = plot_data[group_col].astype(str).tolist()
@@ -123,6 +145,8 @@ def plot_oneway(
123
145
  ax.tick_params(axis="y", labelsize=style.tick_size)
124
146
  if style.grid:
125
147
  ax.grid(True, linestyle=style.grid_style, alpha=style.grid_alpha)
148
+ if pred_col is not None:
149
+ ax.legend(fontsize=style.legend_size)
126
150
 
127
151
  ax2 = ax.twinx()
128
152
  ax2.bar(
@@ -14,7 +14,7 @@ def _discover_packages() -> list[str]:
14
14
 
15
15
  setup(
16
16
  name="Ins-Pricing",
17
- version="0.1.8",
17
+ version="0.1.11",
18
18
  description="Reusable modelling, pricing, governance, and reporting utilities.",
19
19
  author="meishi125478",
20
20
  license="Proprietary",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ins_pricing
3
- Version: 0.1.8
3
+ Version: 0.1.11
4
4
  Summary: Reusable modelling, pricing, governance, and reporting utilities.
5
5
  Author: meishi125478
6
6
  License: Proprietary
@@ -1,11 +1,6 @@
1
1
  MANIFEST.in
2
2
  README.md
3
3
  pyproject.toml
4
- Ins_Pricing.egg-info/PKG-INFO
5
- Ins_Pricing.egg-info/SOURCES.txt
6
- Ins_Pricing.egg-info/dependency_links.txt
7
- Ins_Pricing.egg-info/requires.txt
8
- Ins_Pricing.egg-info/top_level.txt
9
4
  ins_pricing/README.md
10
5
  ins_pricing/__init__.py
11
6
  ins_pricing/setup.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ins_pricing"
7
- version = "0.1.8"
7
+ version = "0.1.11"
8
8
  description = "Reusable modelling, pricing, governance, and reporting utilities."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
File without changes
File without changes
File without changes