validmind 2.0.7__py3-none-any.whl → 2.1.0__py3-none-any.whl

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 (108) hide show
  1. validmind/__init__.py +3 -3
  2. validmind/__version__.py +1 -1
  3. validmind/ai.py +7 -11
  4. validmind/api_client.py +29 -27
  5. validmind/client.py +10 -3
  6. validmind/datasets/credit_risk/__init__.py +11 -0
  7. validmind/datasets/credit_risk/datasets/lending_club_loan_data_2007_2014_clean.csv.gz +0 -0
  8. validmind/datasets/credit_risk/lending_club.py +394 -0
  9. validmind/logging.py +9 -2
  10. validmind/template.py +2 -2
  11. validmind/test_suites/__init__.py +4 -2
  12. validmind/tests/__init__.py +97 -50
  13. validmind/tests/data_validation/FeatureTargetCorrelationPlot.py +3 -1
  14. validmind/tests/data_validation/PiTCreditScoresHistogram.py +1 -1
  15. validmind/tests/data_validation/ScatterPlot.py +8 -2
  16. validmind/tests/decorator.py +138 -14
  17. validmind/tests/model_validation/BertScore.py +1 -1
  18. validmind/tests/model_validation/BertScoreAggregate.py +1 -1
  19. validmind/tests/model_validation/BleuScore.py +1 -1
  20. validmind/tests/model_validation/ClusterSizeDistribution.py +1 -1
  21. validmind/tests/model_validation/ContextualRecall.py +1 -1
  22. validmind/tests/model_validation/FeaturesAUC.py +110 -0
  23. validmind/tests/model_validation/MeteorScore.py +1 -1
  24. validmind/tests/model_validation/RegardHistogram.py +1 -1
  25. validmind/tests/model_validation/RegardScore.py +1 -1
  26. validmind/tests/model_validation/RegressionResidualsPlot.py +127 -0
  27. validmind/tests/model_validation/RougeMetrics.py +1 -1
  28. validmind/tests/model_validation/RougeMetricsAggregate.py +1 -1
  29. validmind/tests/model_validation/SelfCheckNLIScore.py +1 -1
  30. validmind/tests/model_validation/TokenDisparity.py +1 -1
  31. validmind/tests/model_validation/ToxicityHistogram.py +1 -1
  32. validmind/tests/model_validation/ToxicityScore.py +1 -1
  33. validmind/tests/model_validation/embeddings/ClusterDistribution.py +1 -1
  34. validmind/tests/model_validation/embeddings/CosineSimilarityDistribution.py +1 -3
  35. validmind/tests/model_validation/embeddings/DescriptiveAnalytics.py +1 -1
  36. validmind/tests/model_validation/embeddings/EmbeddingsVisualization2D.py +1 -1
  37. validmind/tests/model_validation/sklearn/ClassifierPerformance.py +15 -18
  38. validmind/tests/model_validation/sklearn/ClusterCosineSimilarity.py +1 -1
  39. validmind/tests/model_validation/sklearn/ClusterPerformance.py +2 -2
  40. validmind/tests/model_validation/sklearn/ConfusionMatrix.py +21 -3
  41. validmind/tests/model_validation/sklearn/MinimumAccuracy.py +1 -1
  42. validmind/tests/model_validation/sklearn/MinimumF1Score.py +1 -1
  43. validmind/tests/model_validation/sklearn/MinimumROCAUCScore.py +1 -1
  44. validmind/tests/model_validation/sklearn/ModelsPerformanceComparison.py +5 -4
  45. validmind/tests/model_validation/sklearn/OverfitDiagnosis.py +2 -2
  46. validmind/tests/model_validation/sklearn/ROCCurve.py +6 -12
  47. validmind/tests/model_validation/sklearn/RegressionErrors.py +2 -2
  48. validmind/tests/model_validation/sklearn/RegressionModelsPerformanceComparison.py +6 -4
  49. validmind/tests/model_validation/sklearn/RegressionR2Square.py +2 -2
  50. validmind/tests/model_validation/sklearn/SHAPGlobalImportance.py +27 -3
  51. validmind/tests/model_validation/sklearn/SilhouettePlot.py +1 -1
  52. validmind/tests/model_validation/sklearn/TrainingTestDegradation.py +2 -2
  53. validmind/tests/model_validation/sklearn/WeakspotsDiagnosis.py +2 -2
  54. validmind/tests/model_validation/statsmodels/CumulativePredictionProbabilities.py +140 -0
  55. validmind/tests/model_validation/statsmodels/GINITable.py +22 -45
  56. validmind/tests/model_validation/statsmodels/{LogisticRegPredictionHistogram.py → PredictionProbabilitiesHistogram.py} +67 -92
  57. validmind/tests/model_validation/statsmodels/RegressionModelForecastPlot.py +2 -2
  58. validmind/tests/model_validation/statsmodels/RegressionModelForecastPlotLevels.py +2 -2
  59. validmind/tests/model_validation/statsmodels/RegressionModelInsampleComparison.py +1 -1
  60. validmind/tests/model_validation/statsmodels/RegressionModelOutsampleComparison.py +1 -1
  61. validmind/tests/model_validation/statsmodels/RegressionModelSummary.py +1 -1
  62. validmind/tests/model_validation/statsmodels/RegressionModelsPerformance.py +1 -1
  63. validmind/tests/model_validation/statsmodels/RegressionPermutationFeatureImportance.py +128 -0
  64. validmind/tests/model_validation/statsmodels/ScorecardHistogram.py +70 -103
  65. validmind/tests/test_providers.py +14 -124
  66. validmind/unit_metrics/__init__.py +76 -69
  67. validmind/unit_metrics/classification/sklearn/Accuracy.py +14 -0
  68. validmind/unit_metrics/classification/sklearn/F1.py +13 -0
  69. validmind/unit_metrics/classification/sklearn/Precision.py +13 -0
  70. validmind/unit_metrics/classification/sklearn/ROC_AUC.py +13 -0
  71. validmind/unit_metrics/classification/sklearn/Recall.py +13 -0
  72. validmind/unit_metrics/composite.py +24 -71
  73. validmind/unit_metrics/regression/GiniCoefficient.py +20 -26
  74. validmind/unit_metrics/regression/HuberLoss.py +12 -16
  75. validmind/unit_metrics/regression/KolmogorovSmirnovStatistic.py +18 -24
  76. validmind/unit_metrics/regression/MeanAbsolutePercentageError.py +7 -13
  77. validmind/unit_metrics/regression/MeanBiasDeviation.py +5 -14
  78. validmind/unit_metrics/regression/QuantileLoss.py +6 -16
  79. validmind/unit_metrics/regression/sklearn/AdjustedRSquaredScore.py +12 -18
  80. validmind/unit_metrics/regression/sklearn/MeanAbsoluteError.py +6 -15
  81. validmind/unit_metrics/regression/sklearn/MeanSquaredError.py +5 -14
  82. validmind/unit_metrics/regression/sklearn/RSquaredScore.py +6 -15
  83. validmind/unit_metrics/regression/sklearn/RootMeanSquaredError.py +11 -14
  84. validmind/utils.py +18 -45
  85. validmind/vm_models/__init__.py +0 -2
  86. validmind/vm_models/dataset.py +255 -16
  87. validmind/vm_models/test/metric.py +1 -2
  88. validmind/vm_models/test/result_wrapper.py +12 -13
  89. validmind/vm_models/test/test.py +2 -1
  90. validmind/vm_models/test/threshold_test.py +1 -2
  91. validmind/vm_models/test_suite/summary.py +3 -3
  92. validmind/vm_models/test_suite/test_suite.py +2 -1
  93. {validmind-2.0.7.dist-info → validmind-2.1.0.dist-info}/METADATA +10 -6
  94. {validmind-2.0.7.dist-info → validmind-2.1.0.dist-info}/RECORD +97 -96
  95. validmind/tests/__types__.py +0 -62
  96. validmind/tests/model_validation/statsmodels/LogRegressionConfusionMatrix.py +0 -128
  97. validmind/tests/model_validation/statsmodels/LogisticRegCumulativeProb.py +0 -172
  98. validmind/tests/model_validation/statsmodels/ScorecardBucketHistogram.py +0 -181
  99. validmind/tests/model_validation/statsmodels/ScorecardProbabilitiesHistogram.py +0 -175
  100. validmind/unit_metrics/sklearn/classification/Accuracy.py +0 -22
  101. validmind/unit_metrics/sklearn/classification/F1.py +0 -24
  102. validmind/unit_metrics/sklearn/classification/Precision.py +0 -24
  103. validmind/unit_metrics/sklearn/classification/ROC_AUC.py +0 -22
  104. validmind/unit_metrics/sklearn/classification/Recall.py +0 -22
  105. validmind/vm_models/test/unit_metric.py +0 -88
  106. {validmind-2.0.7.dist-info → validmind-2.1.0.dist-info}/LICENSE +0 -0
  107. {validmind-2.0.7.dist-info → validmind-2.1.0.dist-info}/WHEEL +0 -0
  108. {validmind-2.0.7.dist-info → validmind-2.1.0.dist-info}/entry_points.txt +0 -0
@@ -6,10 +6,10 @@ from dataclasses import dataclass
6
6
  from typing import List, Optional
7
7
 
8
8
  import ipywidgets as widgets
9
+ import mistune
9
10
  from IPython.display import display
10
11
 
11
12
  from ...logging import get_logger
12
- from ...utils import clean_docstring
13
13
  from ..test.result_wrapper import FailedResultWrapper
14
14
  from .test_suite import TestSuiteSection, TestSuiteTest
15
15
 
@@ -36,7 +36,7 @@ class TestSuiteSectionSummary:
36
36
  self._build_summary()
37
37
 
38
38
  def _add_description(self):
39
- description = f'<div class="result">{clean_docstring(self.description)}</div>'
39
+ description = f'<div class="result">{mistune.html(self.description)}</div>'
40
40
  self._widgets.append(widgets.HTML(value=description))
41
41
 
42
42
  def _add_tests_summary(self):
@@ -101,7 +101,7 @@ class TestSuiteSummary:
101
101
  self._widgets.append(widgets.HTML(value=results_link))
102
102
 
103
103
  def _add_description(self):
104
- description = f'<div class="result">{clean_docstring(self.description)}</div>'
104
+ description = f'<div class="result">{mistune.html(self.description)}</div>'
105
105
  self._widgets.append(widgets.HTML(value=description))
106
106
 
107
107
  def _add_sections_summary(self):
@@ -7,6 +7,7 @@ Base class for test suites and test suite sections
7
7
  """
8
8
 
9
9
  from dataclasses import dataclass
10
+ from inspect import getdoc
10
11
  from typing import ClassVar, List, Optional, Union
11
12
 
12
13
  from ...logging import get_logger
@@ -154,7 +155,7 @@ class TestSuite:
154
155
 
155
156
  @property
156
157
  def description(self):
157
- return self.__doc__
158
+ return getdoc(self).strip()
158
159
 
159
160
  @property
160
161
  def title(self):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: validmind
3
- Version: 2.0.7
3
+ Version: 2.1.0
4
4
  Summary: ValidMind Developer Framework
5
5
  License: Commercial License
6
6
  Author: Andres Rodriguez
@@ -27,23 +27,27 @@ Requires-Dist: ipywidgets (>=8.0.6,<9.0.0)
27
27
  Requires-Dist: kaleido (>=0.2.1,<0.3.0,!=0.2.1.post1)
28
28
  Requires-Dist: langdetect (>=1.0.9,<2.0.0)
29
29
  Requires-Dist: levenshtein (>=0.21.1,<0.22.0) ; extra == "all" or extra == "llm"
30
- Requires-Dist: markdown (>=3.4.3,<4.0.0)
30
+ Requires-Dist: llvmlite (>=0.42.0) ; python_version >= "3.12"
31
+ Requires-Dist: llvmlite ; python_version >= "3.8" and python_full_version <= "3.11.0"
31
32
  Requires-Dist: matplotlib (<3.8.3)
33
+ Requires-Dist: mistune (>=3.0.2,<4.0.0)
32
34
  Requires-Dist: nltk (>=3.8.1,<4.0.0)
33
35
  Requires-Dist: numba (<0.59.0)
34
- Requires-Dist: numpy (>=1.23.3,<2.0.0)
36
+ Requires-Dist: numpy (>=1.23.3,<2.0.0) ; python_version >= "3.8" and python_full_version <= "3.11.0"
37
+ Requires-Dist: numpy (>=1.26.0) ; python_version >= "3.12"
35
38
  Requires-Dist: openai (>=1.3.7,<2.0.0) ; extra == "all" or extra == "llm"
36
- Requires-Dist: pandas (==1.5.3)
39
+ Requires-Dist: pandas (>=1.1,<2)
37
40
  Requires-Dist: plotly (>=5.14.1,<6.0.0)
38
41
  Requires-Dist: plotly-express (>=0.4.1,<0.5.0)
39
42
  Requires-Dist: polars (>=0.20.15,<0.21.0)
40
43
  Requires-Dist: pycocoevalcap (>=1.2,<2.0) ; extra == "all" or extra == "llm"
41
44
  Requires-Dist: pypmml (>=0.9.17,<0.10.0)
42
45
  Requires-Dist: python-dotenv (>=0.20.0,<0.21.0)
43
- Requires-Dist: requests (>=2.27.1,<3.0.0)
44
46
  Requires-Dist: rouge (>=1.0.1,<2.0.0)
45
47
  Requires-Dist: rpy2 (>=3.5.10,<4.0.0) ; extra == "all" or extra == "r-support"
46
48
  Requires-Dist: scikit-learn (>=1.0.2,<2.0.0)
49
+ Requires-Dist: scipy (>=1.12) ; python_version >= "3.12"
50
+ Requires-Dist: scipy ; python_version >= "3.8" and python_full_version <= "3.11.0"
47
51
  Requires-Dist: scorecardpy (>=0.1.9.6,<0.2.0.0)
48
52
  Requires-Dist: seaborn (>=0.11.2,<0.12.0)
49
53
  Requires-Dist: selfcheckgpt (>=0.1.7,<0.2.0)
@@ -56,7 +60,7 @@ Requires-Dist: torch (>=1.10.0) ; extra == "all" or extra == "llm" or extra == "
56
60
  Requires-Dist: torchmetrics (>=1.1.1,<2.0.0) ; extra == "all" or extra == "llm"
57
61
  Requires-Dist: tqdm (>=4.64.0,<5.0.0)
58
62
  Requires-Dist: transformers (>=4.32.0,<5.0.0) ; extra == "all" or extra == "llm" or extra == "transformers"
59
- Requires-Dist: xgboost (>=1.5.2,<2.0.0)
63
+ Requires-Dist: xgboost (>=1.5.2,<3)
60
64
  Requires-Dist: ydata-profiling (>=4.7.0,<5.0.0)
61
65
  Description-Content-Type: text/markdown
62
66
 
@@ -1,8 +1,8 @@
1
- validmind/__init__.py,sha256=tHKHxeW-0EFUWVEvGyo8fG1rBU_n6TtMyaJnRY0yEAU,3699
2
- validmind/__version__.py,sha256=L4aOgvDE9n_eqL_mM_j5bO3bQ73q6ulNpnVuG8OmqWE,22
3
- validmind/ai.py,sha256=P19-4b00yOrgigJ7mN7bj0IxGsqbgORyIlTtICytKWQ,6544
4
- validmind/api_client.py,sha256=9OxHxjLe3h-oG0nx-Vm-iLGSbrPrfInwj3I2d4wpAmM,15290
5
- validmind/client.py,sha256=H7Eg_eBcAFwDQ4uuicWI7nPZdbMtIjBzb724LZ816ow,16618
1
+ validmind/__init__.py,sha256=XqPjCbFMvEYl0cIT42EZKP7DFMYDC7KDW6syo8MGkDg,3682
2
+ validmind/__version__.py,sha256=Xybt2skBZamGMNlLuOX1IG-h4uIxqUDGAO8MIGWrJac,22
3
+ validmind/ai.py,sha256=P3cO8FVj_nEhMj7FA5OalMah-lCptCjFC8Sr31fsrHo,6403
4
+ validmind/api_client.py,sha256=aZAwgg7U5IwfX__rmhRdAM6zD5skifuEUV4vvyoWp-U,15432
5
+ validmind/client.py,sha256=C_8KmuiteezpIfvc-D5lnkm8rQRlS70_iMVc9RMltx4,16818
6
6
  validmind/client_config.py,sha256=58L6s6-9vFWC9vkSs_98CjV1YWmlksdhblJtPQxQsAk,1611
7
7
  validmind/datasets/__init__.py,sha256=oYfcvW7BAyUgpghBOnTeGbQF6tpFAWg38rRirdLr8m8,262
8
8
  validmind/datasets/classification/__init__.py,sha256=HlTOBLyb6IorRYmAhP3AIyX-l-NyemyDjV8BBOdrCrY,1787
@@ -11,6 +11,9 @@ validmind/datasets/classification/datasets/bank_customer_churn.csv,sha256=b0muNg
11
11
  validmind/datasets/classification/datasets/taiwan_credit.csv,sha256=fe19VfV30li7rdydnXpbqC372JCdf_HvDc3mMlWNbXE,2897191
12
12
  validmind/datasets/classification/taiwan_credit.py,sha256=nj6JyfcyAfaYgh60T3LdBZsCpzRBsMf0RjYMvedHzuQ,1469
13
13
  validmind/datasets/cluster/digits.py,sha256=E600pX6QPrqndfr73kwZ1sTNk0hC5kNj4Fhs8zz8bQo,2097
14
+ validmind/datasets/credit_risk/__init__.py,sha256=5y_NKgWbCfPSw34dYEcgu9y2hici2pxidQqkm-emofs,270
15
+ validmind/datasets/credit_risk/datasets/lending_club_loan_data_2007_2014_clean.csv.gz,sha256=bAgdfmUxjYOdZMPvoHtKr_GLoXNAX04KUTfjn2L62eE,5493810
16
+ validmind/datasets/credit_risk/lending_club.py,sha256=oscdu1zmDytSU6dJwinl97si4LDdzMBTFUgiJialRmE,11403
14
17
  validmind/datasets/nlp/__init__.py,sha256=lu2-SGOSECgrxhDtHdlh_FsbpsFtuZ4DbLSL1sww5nc,323
15
18
  validmind/datasets/nlp/cnn_dailymail.py,sha256=9gAHFWQhSJJ2JF_zarc2oLErZwPtRyfvXV4molhVzXM,3471
16
19
  validmind/datasets/nlp/datasets/Covid_19.csv,sha256=cwAJHgek3JWUhtZQIiC9-wRWycxbiod6nyZikf09iKE,11545066
@@ -48,7 +51,7 @@ validmind/datasets/regression/models/fred_loan_rates_model_5.pkl,sha256=FkNLHq9x
48
51
  validmind/errors.py,sha256=jHj__AKOMiwIb7qSs2mxu3LSi0lyzFwSAt1gy2lpDaE,7993
49
52
  validmind/html_templates/content_blocks.py,sha256=M5BGGXT90kqUrxynkB4DPC4BQziLWglB2oK2En6KP9s,1607
50
53
  validmind/input_registry.py,sha256=zexO3x-vncaoWvQ6VfkvgDLn6x72e2BNel_jCbrVHSE,793
51
- validmind/logging.py,sha256=AnCOUd6VyCl-5iJCJxXoNfGKyxSxHLRN8nOAMs4WBCU,4808
54
+ validmind/logging.py,sha256=Ui67RYoB1qbuHm_KX1aGj_8DoK_ljjUDGG6a1XJ4yoY,5041
52
55
  validmind/models/__init__.py,sha256=SWfy_JTnifVCbl04SZg3vwSJpRX_kWtb5wQlSIhJ9T8,623
53
56
  validmind/models/catboost.py,sha256=xw3m2iE4k4TL8FLi-hQy5ylIGG7ta4Q58bcQ_04BJbw,1036
54
57
  validmind/models/foundation.py,sha256=pZVmIC1lpszQLluEOtnuvdVRoOf-j6XsjRfBZQXVITc,2269
@@ -58,8 +61,8 @@ validmind/models/r_model.py,sha256=GzlVeJgPNwtzcbyThjGyZ4T3vBJFOYDSh0aqRMsIDOQ,8
58
61
  validmind/models/sklearn.py,sha256=pSg3eSQovxSD2cqcUDwQOXGseg0Bicsn_FXa9_URekE,2405
59
62
  validmind/models/statsmodels.py,sha256=_8GYhO21-rs3QUE_YOFi1eGMMBIr-weJmxmCrw1HZxQ,1455
60
63
  validmind/models/xgboost.py,sha256=joL0uyhE4bJfINHh-dMtPhQ5d1MfWfRMVD77XWmAUnY,951
61
- validmind/template.py,sha256=X6Hl6JHaUll7yVcC_VNu66YaCXAAsPPiDhBqTSeOtm4,7918
62
- validmind/test_suites/__init__.py,sha256=cQPKtZldzeVKfyD6BCz8diFi5yxbewQXQ3wR_1yN8L8,7231
64
+ validmind/template.py,sha256=6k9IcnHwS5Dd4KQrUIpjQ83TZOI3YAhJML7GEB22ZtI,7907
65
+ validmind/test_suites/__init__.py,sha256=u_qMwPxpqgIkT7UOuE1qb0qDcNk0tXAVrUg1kGMqW2Q,7259
63
66
  validmind/test_suites/classifier.py,sha256=0ZE3z5X_ZewTvmwQ3cVGJQh7dPgg0IlqcQshJJxCFWQ,4003
64
67
  validmind/test_suites/cluster.py,sha256=Wc2NViwivjiuiJMwrnGbOJYeZ3ApN8usWlOPYZYWAgE,2276
65
68
  validmind/test_suites/embeddings.py,sha256=sBQRMjlp7kzsvPkA0qkgmAr4yzUrHMmXSEfSHMkn-_s,1949
@@ -72,8 +75,7 @@ validmind/test_suites/summarization.py,sha256=unEpfk8_etLMuYAtSmBzlqrUpo0kd9Vc3S
72
75
  validmind/test_suites/tabular_datasets.py,sha256=WE4eLzRCfiqAxRqXnZFRR3Lo_u-TI6KM6hmTbR8rg5o,1798
73
76
  validmind/test_suites/text_data.py,sha256=YGVGBB05356jN9Gzcy5CHShRzo1fm5mKsZY7YBq0cYU,739
74
77
  validmind/test_suites/time_series.py,sha256=msUyYySAe5VHJJp6z0k0cNt2ekMB8-XkxGER75Zs1hs,6724
75
- validmind/tests/__init__.py,sha256=LEzglKuapj8Az6dvMcfm_xD5yoYGGivHCgwtrBtN7fk,13854
76
- validmind/tests/__types__.py,sha256=qpviIvN-OGmgd9Kmw0kZ6HVjYe-IuaSCygXgZyNv1-8,1603
78
+ validmind/tests/__init__.py,sha256=5V86X-H_z2Dx6gxD2-VnOBjE-pGqXesrm8wkBrgv3YE,15290
77
79
  validmind/tests/data_validation/ACFandPACFPlot.py,sha256=__JowNXtc511g_g8VXc0IX7j6qBE5J_v7IoWUKmj_E8,4745
78
80
  validmind/tests/data_validation/ANOVAOneWayTable.py,sha256=PEHFVJnFAK6Oy5RW1wJThEzri92THRgwQ45f6RXMGMI,6026
79
81
  validmind/tests/data_validation/AutoAR.py,sha256=kulDh8i7p7CjenVvXS54kfZe53M-eXzQ7aHZylnA06M,6676
@@ -91,7 +93,7 @@ validmind/tests/data_validation/DefaultRatesbyRiskBandPlot.py,sha256=lrVeFrw4rRN
91
93
  validmind/tests/data_validation/DescriptiveStatistics.py,sha256=oVjFO-mR5sMQwzGFrjN5UP9jugNy0nSRtNwPbcGthGk,6411
92
94
  validmind/tests/data_validation/Duplicates.py,sha256=rDLxdNLGqfL-Yon04b8uFESazKtn7hqxsegvPfoRHBE,5639
93
95
  validmind/tests/data_validation/EngleGrangerCoint.py,sha256=Rz8BaptMo79JS8XGrnCGnrMmZo994HBmVGKJCvBqfH0,5580
94
- validmind/tests/data_validation/FeatureTargetCorrelationPlot.py,sha256=qqxA6EM-PLqREn64S_bxl9lwEm7KuhCe6yhY7t3x7PI,5001
96
+ validmind/tests/data_validation/FeatureTargetCorrelationPlot.py,sha256=wfYhyK-hhUHGxfWDAUqoorY2EXbDeLCbroPMi14vkzs,5036
95
97
  validmind/tests/data_validation/HeatmapFeatureCorrelations.py,sha256=JAxx9JUmplFTcQtaFaCk9JCDCMLkDABMhSgj65ARAUc,5707
96
98
  validmind/tests/data_validation/HighCardinality.py,sha256=4cjBNoWYUHVhl3TuRLrBa6tZ4AWJAOLgIjtk3JnrEZ4,5111
97
99
  validmind/tests/data_validation/HighPearsonCorrelation.py,sha256=0W_nai0F169rH-rsQynEkozTUrFEnTkS0RaFjL-zodA,5582
@@ -103,10 +105,10 @@ validmind/tests/data_validation/MissingValues.py,sha256=gvLTy5DiBqp0VemOhVEUq3Bs
103
105
  validmind/tests/data_validation/MissingValuesBarPlot.py,sha256=bTfMCab8gK0VXF1EZ18pTguZkFdfo1ZHhz2hmkFAyG4,6226
104
106
  validmind/tests/data_validation/MissingValuesRisk.py,sha256=GzsGHFL-qMQxuqdu62SF4O5r8UDoUN5xv_b8drR-Afc,4110
105
107
  validmind/tests/data_validation/PearsonCorrelationMatrix.py,sha256=dM6M8jjGHNL9umM1vcKwG5bP3BIW8Psle-_0naKg6iE,4747
106
- validmind/tests/data_validation/PiTCreditScoresHistogram.py,sha256=7NdDCVO7rUO66LZqS3C2XQEmWowDWUm2hWsOQ5Nap3I,5639
108
+ validmind/tests/data_validation/PiTCreditScoresHistogram.py,sha256=tH6DB9mlNsg87p2JIYhUaCEiRCrYh2JCFYnS4anoD44,5630
107
109
  validmind/tests/data_validation/PiTPDHistogram.py,sha256=d37gdsUle_m7rzJEgvR735P7hZdzz2ly5YA1huwMbgc,5950
108
110
  validmind/tests/data_validation/RollingStatsPlot.py,sha256=MqKooEL1cIRandoSN7sWhKgXDhdbIbCcBTVvc-FIp5k,5901
109
- validmind/tests/data_validation/ScatterPlot.py,sha256=E82xyP8-GdlQJ1IeXsyS3BE_fwuYw38gtkf_UTbb4m8,4047
111
+ validmind/tests/data_validation/ScatterPlot.py,sha256=57wfWhJY0c0l_iqVYq6DqrbHHNYdH-AJY_sPppLqeYI,4371
110
112
  validmind/tests/data_validation/SeasonalDecompose.py,sha256=U56NXO1q9wnzCWnK3xCeklKPGVUxIOTzi-6cLrUkUsY,8903
111
113
  validmind/tests/data_validation/Skewness.py,sha256=lygUUQomckvdX5__JGOn6Rx0kJRfyw-0gZOjqqN9Phk,4935
112
114
  validmind/tests/data_validation/SpreadPlot.py,sha256=3FMhokxIexGzRoIlRElkkgpQRRdvnlyx0-tt8aK-wDY,4591
@@ -132,27 +134,29 @@ validmind/tests/data_validation/nlp/Punctuations.py,sha256=5WI3Uu9EpdJ2FWBY2qBXR
132
134
  validmind/tests/data_validation/nlp/StopWords.py,sha256=YAwXyfoCLR8jLm7dlXknSpgUoN4JoBK3750hNByJ5FA,6131
133
135
  validmind/tests/data_validation/nlp/TextDescription.py,sha256=27u4xpFX-FYuMcDVRkw3p1ajcCzd5TgaVkPIqOi8GJc,8718
134
136
  validmind/tests/data_validation/nlp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
135
- validmind/tests/decorator.py,sha256=v9PevVM08FtKKHoXHRRrGt9OAKyWhzd3tBxsLSxX5ik,5611
136
- validmind/tests/model_validation/BertScore.py,sha256=1BSgPQkxy2XhmOjlON6tAY_Lq8PQzfqXlFVqRX6Ad6o,4560
137
- validmind/tests/model_validation/BertScoreAggregate.py,sha256=up6gqYCYM-RrSN9L4E32qR_obTwHms_VN49MHZYMhH0,3781
138
- validmind/tests/model_validation/BleuScore.py,sha256=_WJv510lB2HEdBbdITMJnOZLx_lb5NBEK6h-39cixyk,3848
139
- validmind/tests/model_validation/ClusterSizeDistribution.py,sha256=ev5_9VjH1DxMfMquijkTYuinZ9uFT0753emk-PbWo6g,4164
140
- validmind/tests/model_validation/ContextualRecall.py,sha256=AEIJKkRT1SiR-Y9Pkl4VrgsjEKboJcttsjjY_RFeGOY,4801
141
- validmind/tests/model_validation/MeteorScore.py,sha256=qcGo1xGDP9QOPb3MiyL5GWvStKHaC4EvPEZ7QS9G6us,4396
137
+ validmind/tests/decorator.py,sha256=d08RohEbcWSzUJvNukmRPD9ajTr_Xcpzgc1LQqvzeRY,9319
138
+ validmind/tests/model_validation/BertScore.py,sha256=IcYrorBjpm65Zhg7nwQpYTpmow9QZeW5EOB9wc4IQP0,4551
139
+ validmind/tests/model_validation/BertScoreAggregate.py,sha256=UVKZdQ0a0CDRLvCm5OkSw-ERnEoboJAgAWf3s70QKLU,3772
140
+ validmind/tests/model_validation/BleuScore.py,sha256=-EVViGcu40ZW6g8v4DTlE1K5q7XoCRuoagvsEgLBlXA,3839
141
+ validmind/tests/model_validation/ClusterSizeDistribution.py,sha256=IKcMBCBsasbi6i8LTqv0H6PUUsG8FXnBtc15uj209WY,4155
142
+ validmind/tests/model_validation/ContextualRecall.py,sha256=wYyjGu8wMdFfS8y59CB8XxWX2Yblh4GI2qmm1H14HpM,4792
143
+ validmind/tests/model_validation/FeaturesAUC.py,sha256=aJucUD5u9VxnLpE3klr49VvyvtqT5QGhYE5VNT4hE44,4657
144
+ validmind/tests/model_validation/MeteorScore.py,sha256=Ym8jaioq6qKlnvltYyHNZ1yDymV7VMGLqn5M-X3tsgQ,4387
142
145
  validmind/tests/model_validation/ModelMetadata.py,sha256=F9ctmlIxngkHgOlggRl0WFLilh46SlM3vYfY9zkhtYk,3733
143
- validmind/tests/model_validation/RegardHistogram.py,sha256=BdXTNPQIahNnYuCTSHd8Jqj0dUNtpGtCQuXFEDnUtVE,6160
144
- validmind/tests/model_validation/RegardScore.py,sha256=5MqNjyX9y8OJWmEwKZuRt0IzZao27q4GVC9noxeCYDs,6181
145
- validmind/tests/model_validation/RougeMetrics.py,sha256=AM7Foqhu52j0UD8ULQrUB9NnFdkWcGtF8YW-K_qMQmM,5802
146
- validmind/tests/model_validation/RougeMetricsAggregate.py,sha256=mqTauD_joTSghAp3f6kB8WdgdDAv2M49UJsM4ICymiA,5213
147
- validmind/tests/model_validation/SelfCheckNLIScore.py,sha256=Bp44I5ZNVutQ7iAPXyI3xB1vLt3nXoadCinae1ARPlc,5486
148
- validmind/tests/model_validation/TokenDisparity.py,sha256=Fi-ut8imGEydcmtIv4eCjgqlV88POcE3BIMU10-UIqw,5465
149
- validmind/tests/model_validation/ToxicityHistogram.py,sha256=t8ONPo5Uugp7Kg1LB_kkVeSaC51ok2wKuVpKW7w1BTE,5108
150
- validmind/tests/model_validation/ToxicityScore.py,sha256=w4WdNgnxizlZ5ND2CghDA6A3M670TQNdy8SSWEAn6G8,5571
146
+ validmind/tests/model_validation/RegardHistogram.py,sha256=zkllYyWi18My7s-dq4aNPEUfDF3Ike5ma9QyQXxiep8,6151
147
+ validmind/tests/model_validation/RegardScore.py,sha256=3N_QcE6zfn1Oi_FxjyGYxseu1mu8mZovQTaUZTeb3As,6172
148
+ validmind/tests/model_validation/RegressionResidualsPlot.py,sha256=EQzJn9wH_1pztHr2JI26Um3E9KzHmu6o76o4ffbXZj4,5025
149
+ validmind/tests/model_validation/RougeMetrics.py,sha256=XeenuungQUquTDqpLx34XwIqmc7_uO5MoQyOCahDCEo,5793
150
+ validmind/tests/model_validation/RougeMetricsAggregate.py,sha256=A3RwyCZ_btNpEsIM-9p5wg529C7lVrMFOKHbHkaZXgI,5204
151
+ validmind/tests/model_validation/SelfCheckNLIScore.py,sha256=dE7X22unmCGwg5E0Fh5zo3R6VhNBX83tQNyEp6wmnzc,5477
152
+ validmind/tests/model_validation/TokenDisparity.py,sha256=SnJC9mGywLt0HDxDge83uVJ-0z8qybb7OoedUiaTncc,5456
153
+ validmind/tests/model_validation/ToxicityHistogram.py,sha256=V1-SkHqp3-JlLV9c4pO-FulvTSwtThQIrOlQc6gDVSc,5099
154
+ validmind/tests/model_validation/ToxicityScore.py,sha256=IWzFMisP7BiM2Tuya4RJkdAbfvHbfsbVunBK8Dgfl20,5562
151
155
  validmind/tests/model_validation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
- validmind/tests/model_validation/embeddings/ClusterDistribution.py,sha256=PtS59NO2aTkBYvdCtH3rW28LnNtLY0IjdNhej8th5bs,3561
153
- validmind/tests/model_validation/embeddings/CosineSimilarityDistribution.py,sha256=PZ0_mfowMZjJKTYOkQpY344x3LhgsAxIgGSgtfyxu40,3490
154
- validmind/tests/model_validation/embeddings/DescriptiveAnalytics.py,sha256=6GRBbuSvKZZk3Tu0pnrvuAkNyNAA65HDxfadq34zShg,4256
155
- validmind/tests/model_validation/embeddings/EmbeddingsVisualization2D.py,sha256=ZJperoku3tQzjWTtAdPFA8Dj6B1T5nAGVbdjw3CyWT8,4351
156
+ validmind/tests/model_validation/embeddings/ClusterDistribution.py,sha256=8V2mE_V3S3cIBk29MB0xPqgla1mxiGJcXZ1m99ds3ck,3552
157
+ validmind/tests/model_validation/embeddings/CosineSimilarityDistribution.py,sha256=B3quw4ZCWVyhDBHbVp637JoVTpSAROJfUwY-ECLOTAo,3459
158
+ validmind/tests/model_validation/embeddings/DescriptiveAnalytics.py,sha256=hLOcJ3lGigyA2VYAQunKB8dkBzh5TORFawg8TZIlG94,4247
159
+ validmind/tests/model_validation/embeddings/EmbeddingsVisualization2D.py,sha256=HxXrkp6OKfGgzuRKWzhAGXYAI8VjYIpLWg62nXHOLVw,4342
156
160
  validmind/tests/model_validation/embeddings/StabilityAnalysis.py,sha256=L8nx-ihORWr9sAPLXcUwzgek9wfauQLaQkO4fCEtAMc,4185
157
161
  validmind/tests/model_validation/embeddings/StabilityAnalysisKeyword.py,sha256=qXqGaK8OVcP6h_iEZOf_-5XtbOGpiU00RyI535deAm0,3907
158
162
  validmind/tests/model_validation/embeddings/StabilityAnalysisRandomNoise.py,sha256=N20bQgBP0AUt3EASZHofQUWbE3N5ix04-r6cXS7YFcg,5672
@@ -160,68 +164,66 @@ validmind/tests/model_validation/embeddings/StabilityAnalysisSynonyms.py,sha256=
160
164
  validmind/tests/model_validation/embeddings/StabilityAnalysisTranslation.py,sha256=mvAmv3PcysITo48GbMS-F_tHUAX_wmS173jrBhBB6mc,4573
161
165
  validmind/tests/model_validation/sklearn/AdjustedMutualInformation.py,sha256=iUt8PJd7Q-nhfDkU0siZY5Gip_uzSCqwOjpd_WBuv2I,2892
162
166
  validmind/tests/model_validation/sklearn/AdjustedRandIndex.py,sha256=Mb03a6R37GagRuy269TE8ZgaMaF3vngcH3-Um6SZYmg,2767
163
- validmind/tests/model_validation/sklearn/ClassifierPerformance.py,sha256=Yhthf5DDlKjq-sy-yhLO2dL4ZoE0QTw8VSg7m8odrhE,5992
164
- validmind/tests/model_validation/sklearn/ClusterCosineSimilarity.py,sha256=i0XyfOUnw-HrntRN9Si2sFdzszvVUQFB7nVp1AOD9fQ,5494
165
- validmind/tests/model_validation/sklearn/ClusterPerformance.py,sha256=OTR7_JudQFkC5HnnuMKZOsEd-jRXYTtXUwQaLbSKGZM,5387
167
+ validmind/tests/model_validation/sklearn/ClassifierPerformance.py,sha256=bbZkuGEm_D_zZf3hBeqjw9DrDKeKoLQiwfg2Cjd7gZY,5945
168
+ validmind/tests/model_validation/sklearn/ClusterCosineSimilarity.py,sha256=bktc1cEkayjwFd846FgkUwCXChCppcJ7XnbWLauREGo,5485
169
+ validmind/tests/model_validation/sklearn/ClusterPerformance.py,sha256=Rq2OXSx6DgbUrR9VP8ncUvCK-BFTzxTrMMlLKMQyu7M,5369
166
170
  validmind/tests/model_validation/sklearn/ClusterPerformanceMetrics.py,sha256=iFbLvZkiYUDa9Lul1jX85TfrkwUAIkOhGTUrRlV3U4Y,8604
167
171
  validmind/tests/model_validation/sklearn/CompletenessScore.py,sha256=Uj_hTTTqRLHDJ-pjajfuun_2Anq7W0GQpwPsAhdWq24,2559
168
- validmind/tests/model_validation/sklearn/ConfusionMatrix.py,sha256=p_E4qOH0Ppi1aM9U_SrvzrGAlI5xEJYJZv9Pm00140c,5267
172
+ validmind/tests/model_validation/sklearn/ConfusionMatrix.py,sha256=Bm9fsw9nD1KurbBbXf0Jph0MN7_-7GRiydiTTfDgiU4,5776
169
173
  validmind/tests/model_validation/sklearn/FowlkesMallowsScore.py,sha256=hL7hfvdeZ_jR9ktxMH9NI-hwvLsl478iQDajOXUuocM,3049
170
174
  validmind/tests/model_validation/sklearn/HomogeneityScore.py,sha256=ykBkNCNm1HRyMoU2x5hK20tuKbU0vYrwj4huc4x7v6w,2753
171
175
  validmind/tests/model_validation/sklearn/HyperParametersTuning.py,sha256=YGJ38Px-RRIkWVHavLr_FNm6sod_k_t6U32BLmIFMTg,4660
172
176
  validmind/tests/model_validation/sklearn/KMeansClustersOptimization.py,sha256=o5ScxbbwW0BziLOVW2hxgj91C0fY5KVanU0tyVBNWBs,5960
173
- validmind/tests/model_validation/sklearn/MinimumAccuracy.py,sha256=gXrcCqyNrjcyYXOraDzSeseJfaBAxoRh2jTc9dEJano,5346
174
- validmind/tests/model_validation/sklearn/MinimumF1Score.py,sha256=V7bb_Yqi3u2fIo-ow9VOmIaWqvdD_UzZwa9ri2FNavA,4687
175
- validmind/tests/model_validation/sklearn/MinimumROCAUCScore.py,sha256=D_KCCE6vmdC7HCJxV3dxTUa1SVK88J7sThUGRiOmzZY,4900
176
- validmind/tests/model_validation/sklearn/ModelsPerformanceComparison.py,sha256=EKI6v-YKVETLIjZtQgla8ISILYpuEZ5fYjgFgpLLt2c,6303
177
- validmind/tests/model_validation/sklearn/OverfitDiagnosis.py,sha256=xMVu18XM-1zpsysG-Mqu594iNmi-aop391ejXYcjL5Q,14174
177
+ validmind/tests/model_validation/sklearn/MinimumAccuracy.py,sha256=MAkVBawefPT_ST5odD3Pyqg-Jbfj1HcmNUkVGwFYcNk,5337
178
+ validmind/tests/model_validation/sklearn/MinimumF1Score.py,sha256=5QLwdsFkuT-k2QkVR6CZw3gPb6RFrgJe8VtZkqma1eg,4678
179
+ validmind/tests/model_validation/sklearn/MinimumROCAUCScore.py,sha256=0KMdAHZOnY_PpoWSNZxmudClqQ469JV_V_vTM3FXAC8,4891
180
+ validmind/tests/model_validation/sklearn/ModelsPerformanceComparison.py,sha256=sUKPQCOrc8r5jCzWyU1n_Cuj9bY4uD8B8aoe-pUoGzY,6297
181
+ validmind/tests/model_validation/sklearn/OverfitDiagnosis.py,sha256=dnyk2MR4YZSLGm378NqEW5l4tkS4HcRbNc1PqYE96UI,14156
178
182
  validmind/tests/model_validation/sklearn/PermutationFeatureImportance.py,sha256=APnrI-jXTew4nq4CkCqAkIcNS0uwWegxSwvhiHN5kV0,5038
179
183
  validmind/tests/model_validation/sklearn/PopulationStabilityIndex.py,sha256=4X3tvbzl5X-hF23kqqAQlMSSHhLltVTFeBwODF_cz00,10242
180
184
  validmind/tests/model_validation/sklearn/PrecisionRecallCurve.py,sha256=XA3_5uXvqJ7rawyK8_i8oB59cpZwh8T1FU9c-PTMY3Q,4401
181
- validmind/tests/model_validation/sklearn/ROCCurve.py,sha256=uhQ_Tru91pbaUhc80FLSHHFkAArhJQrB1MWW5YQ3r0s,5964
182
- validmind/tests/model_validation/sklearn/RegressionErrors.py,sha256=Oo1ywVHv1hxi4RNtkx7wqiiLGu0Tfdikplp5mkZQz3o,5998
183
- validmind/tests/model_validation/sklearn/RegressionModelsPerformanceComparison.py,sha256=JUnmMb44YBdEcgjN4IOaYTkhP3GjaLW_w2pruyBbDvY,5522
184
- validmind/tests/model_validation/sklearn/RegressionR2Square.py,sha256=4bvErRBYJqrMVDNCAzIPt9fgQVfdBAYOBY7L-1fgBjQ,4987
185
+ validmind/tests/model_validation/sklearn/ROCCurve.py,sha256=llDy61r921sIcoTZk4tXhjM50sOO90h_zsEKxa3Y4wA,5785
186
+ validmind/tests/model_validation/sklearn/RegressionErrors.py,sha256=SBxFPZ1-C_ObpLeol7ghf5cdJBimNljYTlFsfohagtA,5980
187
+ validmind/tests/model_validation/sklearn/RegressionModelsPerformanceComparison.py,sha256=RIup0L4cXycyWfU4GY9J7BuX88OoJ9eSs6ruT4Ho1vU,5539
188
+ validmind/tests/model_validation/sklearn/RegressionR2Square.py,sha256=-EWxr6T6y59whYDDaDeenduHMaYoOpc8AVwe-X0j83o,4969
185
189
  validmind/tests/model_validation/sklearn/RobustnessDiagnosis.py,sha256=JQTWfdocIHYYv69nzbC0M0GAh6ldUMfQ4TKK9jUnhCI,13780
186
- validmind/tests/model_validation/sklearn/SHAPGlobalImportance.py,sha256=AbijM6XBmHj_YSvrbUaAOQ_73oS52EbhFVk8RcF8qPk,7655
187
- validmind/tests/model_validation/sklearn/SilhouettePlot.py,sha256=FifZA2aL8SPgnD6T_mEDwCFgMjpce5cB8WO-WwvrFr8,6246
188
- validmind/tests/model_validation/sklearn/TrainingTestDegradation.py,sha256=Z8C7JEwgCyODhsXimGeBckWuFJjboT9HlOqnqglJRV0,7291
190
+ validmind/tests/model_validation/sklearn/SHAPGlobalImportance.py,sha256=iGx_y-6NrzptmEzTKpKmUPz_bwS6ewXEuwOSM1LRQM4,8650
191
+ validmind/tests/model_validation/sklearn/SilhouettePlot.py,sha256=TznxbLhwybNbht6hUg4MSKxX3TI7zJp75tQH0svWon0,6237
192
+ validmind/tests/model_validation/sklearn/TrainingTestDegradation.py,sha256=Gy2I67FFu1q_Ny92RAiXyZ_l6TZEY0_X_MMNHy7pqc4,7273
189
193
  validmind/tests/model_validation/sklearn/VMeasure.py,sha256=x2cdcN_Wh_hnfAsF715QgWBPbhZMi533PO-No84iEJ4,2772
190
- validmind/tests/model_validation/sklearn/WeakspotsDiagnosis.py,sha256=5kprqZWReOZm14cYvxA0_DmFP9Kus1L82ha_yVVpu88,14245
194
+ validmind/tests/model_validation/sklearn/WeakspotsDiagnosis.py,sha256=5Ishn16wtBsfmlnlj9mufaElNQ6uGfI9hakvvAVq7os,14227
191
195
  validmind/tests/model_validation/sklearn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
192
196
  validmind/tests/model_validation/statsmodels/ADF.py,sha256=97lutdezxrdsFB1rkTESx2uSp8RHPRhEhucrs2ZyR04,4042
193
197
  validmind/tests/model_validation/statsmodels/ADFTest.py,sha256=pNuH0699hyI7533iuMMf2C3FiVb-TM3fSEsZuGdSGJA,4039
194
198
  validmind/tests/model_validation/statsmodels/AutoARIMA.py,sha256=mb-QlmiYDaOWJNneUcgL27km3dGNaqIuP6Bw_rG4Emc,5172
195
199
  validmind/tests/model_validation/statsmodels/BoxPierce.py,sha256=3xhBDYemI07MK-DKO788Vc2q-ST7sycmqr7HN1inU-E,3581
200
+ validmind/tests/model_validation/statsmodels/CumulativePredictionProbabilities.py,sha256=_l8aPSS_IgGypt3A3nyd3Zd54W8JRvK-t3Rvc7-LQrc,6389
196
201
  validmind/tests/model_validation/statsmodels/DFGLSArch.py,sha256=SjmQYMazR4QzfpCwwhxty_JvJaUU88hcdqH0uFz3tlE,3365
197
202
  validmind/tests/model_validation/statsmodels/DurbinWatsonTest.py,sha256=dkdMH0dfFCbHacpFCL_7KBUzHiwmV5DYhsJlV4_k9dI,2957
198
203
  validmind/tests/model_validation/statsmodels/FeatureImportanceAndSignificance.py,sha256=ZOZucyM6YbWInqS_flSpgC2saOVDPdrcvUYWZ_gk9Go,7199
199
- validmind/tests/model_validation/statsmodels/GINITable.py,sha256=bVI8mBg6yDS9lDVvgDMMxKLIyoBJkf_PrKDYf6iO_D8,6335
204
+ validmind/tests/model_validation/statsmodels/GINITable.py,sha256=QUbvTuxm8l0vL7OkVqLmiI21gaDEZ35SA4wikxK93YM,5753
200
205
  validmind/tests/model_validation/statsmodels/JarqueBera.py,sha256=G2Jyry_knx3h5daErRUNZO5JP63M9OurUSuCQBVEke4,3362
201
206
  validmind/tests/model_validation/statsmodels/KPSS.py,sha256=tP6Xzp7oZ_p1ktIV3g8bG4CA4YTrXt7hrTdvnfCUf4M,3313
202
207
  validmind/tests/model_validation/statsmodels/KolmogorovSmirnov.py,sha256=RXsSi7FeJeUl8Q0QXvacQ8r9HR4hVtRiGPoMrRLtXjg,4371
203
208
  validmind/tests/model_validation/statsmodels/LJungBox.py,sha256=PTPSW8IT5b8lHV66vQRtjbz7VWPcXCn7PGz6YOK9j0w,3309
204
209
  validmind/tests/model_validation/statsmodels/Lilliefors.py,sha256=Gmxw2r4Qsa8kVE-5MCkqE3UJZdR9eGMYTvg-D7s2Mp8,3997
205
- validmind/tests/model_validation/statsmodels/LogRegressionConfusionMatrix.py,sha256=MEN1gPkrUjcEtRcxxGoiH9G63VyKggHDQKdzlY2M1W0,5339
206
- validmind/tests/model_validation/statsmodels/LogisticRegCumulativeProb.py,sha256=DO3HBhekqi0oyKfbC2j-ktXTJe_o8s63UUt5ySCSH80,7155
207
- validmind/tests/model_validation/statsmodels/LogisticRegPredictionHistogram.py,sha256=Mvi88U6hFQfFwi45uajXTg0r2mEaoxh8GPOU3uWx90w,6859
208
210
  validmind/tests/model_validation/statsmodels/PDRatingClassPlot.py,sha256=EqsAG2vpDzBxb-0iGBKegtF25U2nuw8VlQVAWvAnXFs,6064
209
211
  validmind/tests/model_validation/statsmodels/PhillipsPerronArch.py,sha256=Z1wogft3oIJHE795vNUMa1r5r-t0yLm19rJRLKmLFAA,3133
212
+ validmind/tests/model_validation/statsmodels/PredictionProbabilitiesHistogram.py,sha256=6HSzbV9oSPZg7olFtnpheTxAD7hFdPISbhOKtmU0QbY,6394
210
213
  validmind/tests/model_validation/statsmodels/RegressionCoeffsPlot.py,sha256=zWOzmEcdsQMzGzT4nCpSSQLQcdc0BERju-xgLBBGC4Y,5657
211
214
  validmind/tests/model_validation/statsmodels/RegressionFeatureSignificance.py,sha256=TGz8ei7pG31tLKjzqNiBNO-UbzGWCabv2rWX-DjiJ4Y,5494
212
- validmind/tests/model_validation/statsmodels/RegressionModelForecastPlot.py,sha256=vOmkrnuSQdlCkFcqb84vecCG1RYqQhqOjhE3Z-cUyr0,6598
213
- validmind/tests/model_validation/statsmodels/RegressionModelForecastPlotLevels.py,sha256=Go-cNjS3FCMOFFDR0nBvQ1c2H0w3xcwVIuj9lE6PPvY,8346
214
- validmind/tests/model_validation/statsmodels/RegressionModelInsampleComparison.py,sha256=iBcHel2OafCBxOVvtAAQz64Qp292Go1tD46XHgVxQxA,6483
215
- validmind/tests/model_validation/statsmodels/RegressionModelOutsampleComparison.py,sha256=TVjuqrwzU4P6sxDkzdyy_vHgyBFIre-MDF9adohkmWk,6292
215
+ validmind/tests/model_validation/statsmodels/RegressionModelForecastPlot.py,sha256=6WlwIoUTQKP8IMuqKtS0AVvM49ubLUmOWYIK3DoHjeo,6580
216
+ validmind/tests/model_validation/statsmodels/RegressionModelForecastPlotLevels.py,sha256=fERW8xCHVGLkJVEMVmHdCrhyBhlNf08Bi22BxyNSXeg,8328
217
+ validmind/tests/model_validation/statsmodels/RegressionModelInsampleComparison.py,sha256=4fJixhDEbMdZOg8EOxNJe3J5H6_PiC1QFg2hWIuauu4,6474
218
+ validmind/tests/model_validation/statsmodels/RegressionModelOutsampleComparison.py,sha256=YrFnY3Vy_0L6uQ_1drz-EUNjgqVaQgPtGohf_pFIJRY,6283
216
219
  validmind/tests/model_validation/statsmodels/RegressionModelSensitivityPlot.py,sha256=q30wFH7QRZKriVMXBmZVE2K30kjcb6zX4IVl1NHT2kA,7320
217
- validmind/tests/model_validation/statsmodels/RegressionModelSummary.py,sha256=JsIvZDmZssB5EEzs_-dlYknmrybPqQOjQOOzmRMAZ_I,4359
220
+ validmind/tests/model_validation/statsmodels/RegressionModelSummary.py,sha256=IkWo8tBh7np_4xTy5cm8SHoXEYggwjk0jiFw3wg1YKA,4350
218
221
  validmind/tests/model_validation/statsmodels/RegressionModelsCoeffs.py,sha256=XTirM2uYbl-Idf1MooaTPZcrN1s5g-nibHUz5SdYfBg,4592
219
- validmind/tests/model_validation/statsmodels/RegressionModelsPerformance.py,sha256=8ZDm2_Mxms1o_RE_7pubJSY8fC_FEpG26LXYcm_555A,5452
222
+ validmind/tests/model_validation/statsmodels/RegressionModelsPerformance.py,sha256=oY57hquPFXsfrzmOxCvY66CfK3CVAsF9W_XbpMaSaQo,5443
223
+ validmind/tests/model_validation/statsmodels/RegressionPermutationFeatureImportance.py,sha256=hrWFViq7poX_G2-AwGffRQnwN9Vr42e4DfZKP-_gsRo,5044
220
224
  validmind/tests/model_validation/statsmodels/ResidualsVisualInspection.py,sha256=ROF3y_akn0cxo6sA38aWElkleg0bcvQfttPc1pjJaHc,5771
221
225
  validmind/tests/model_validation/statsmodels/RunsTest.py,sha256=TJdixri2vrrA4HUUpTYveoVzr7V9lcH6CJnPTLxSqms,3684
222
- validmind/tests/model_validation/statsmodels/ScorecardBucketHistogram.py,sha256=pYMuUkIf5vHNC_EjTYBlmsA_SdfsXvHPVrLQOdcM5VU,6901
223
- validmind/tests/model_validation/statsmodels/ScorecardHistogram.py,sha256=UfiGDiOuraGz8vu9R3cw132oxahLqte7jEpNoeW6Ses,7073
224
- validmind/tests/model_validation/statsmodels/ScorecardProbabilitiesHistogram.py,sha256=-SfsY5gZU4w-LmWdAHzKizU4tAqZipZcrX-7AzDhDEI,7140
226
+ validmind/tests/model_validation/statsmodels/ScorecardHistogram.py,sha256=uESuMD8UA_BPRjnIbsnHUQUCzTSWxGG6646QRW1wMH8,6300
225
227
  validmind/tests/model_validation/statsmodels/ShapiroWilk.py,sha256=W8_EARepPA0CpApy0w7cLcbnP7ZegBjntGSUOcuyrqQ,3243
226
228
  validmind/tests/model_validation/statsmodels/ZivotAndrewsArch.py,sha256=4QrZImKZYVLKrmUgjnBTldtIqXf8-tyz9CiNqMYtj_w,3291
227
229
  validmind/tests/model_validation/statsmodels/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -235,46 +237,45 @@ validmind/tests/prompt_validation/Robustness.py,sha256=VIQotugWQ32Q1kr1kacBuqk-q
235
237
  validmind/tests/prompt_validation/Specificity.py,sha256=v823rZAr9a810Q_RlgH7FqPPxXZ00hDJApkFaJJ8mgk,6116
236
238
  validmind/tests/prompt_validation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
237
239
  validmind/tests/prompt_validation/ai_powered_test.py,sha256=pogmrOR2fTY34Tx5TXIs5Smjz09mdh5Kp4NifrmPrFY,2975
238
- validmind/tests/test_providers.py,sha256=00H3loloGi2aw6yn2e8a072mcb7KNcplkA7LBP4NEDQ,8280
239
- validmind/unit_metrics/__init__.py,sha256=tzQ80uG1MR9F9b2rlMCkh-gAut09kmdG4hTClQGLk48,8192
240
- validmind/unit_metrics/composite.py,sha256=VKgZQkr9YOEGt9ovdgzufQwjSS2kC1kCG3J5-bgv15k,9013
241
- validmind/unit_metrics/regression/GiniCoefficient.py,sha256=FuHdtLefQZ4S2hQmONvw3g2plYvMT5PdJefK9yzOvgM,1228
242
- validmind/unit_metrics/regression/HuberLoss.py,sha256=r5L7ICMXp_y65ewAT8yJsArRLrvZLhIWlTgvd2EYwL8,880
243
- validmind/unit_metrics/regression/KolmogorovSmirnovStatistic.py,sha256=9-DnK2caPAntooU1R4L7vCA9yJFOWYzWRZKHAI-_kso,1221
244
- validmind/unit_metrics/regression/MeanAbsolutePercentageError.py,sha256=rsPiBkAzQqgooai8Qvf4r_3wBUWhySUBDS537FNLbrQ,653
245
- validmind/unit_metrics/regression/MeanBiasDeviation.py,sha256=a5fAVipVRvnyy_526bpV1WAeUQuVD8Vz9EJKaIPEFKE,618
246
- validmind/unit_metrics/regression/QuantileLoss.py,sha256=XV_eNgeZPQGWgtgXC971fWrePnkvuJypBk1yCuqdAT4,749
247
- validmind/unit_metrics/regression/sklearn/AdjustedRSquaredScore.py,sha256=3mOhYCeGNeCpnurHrngXs0vJd3BPx3xTV7vG_pUKieA,859
248
- validmind/unit_metrics/regression/sklearn/MeanAbsoluteError.py,sha256=PksSI_a7Hw_ntLXzmBwSMV1HwEFYtG_O8oP0IlpIOY4,673
249
- validmind/unit_metrics/regression/sklearn/MeanSquaredError.py,sha256=BLM24lUh_IuA6ygjhxGpCEsQ-WXBG44-VBf7n0f5p0k,670
250
- validmind/unit_metrics/regression/sklearn/RSquaredScore.py,sha256=5EAjZN6unLeyXlZV4dr3b5exQImKiu86lUAnW890xlM,637
251
- validmind/unit_metrics/regression/sklearn/RootMeanSquaredError.py,sha256=1MMO90-Dy3DehS5suPt2ajKKdwMu92GCNx0Xf4xX32E,702
252
- validmind/unit_metrics/sklearn/classification/Accuracy.py,sha256=9Og0SQ2sryrkzl4GEv_0XY8hblBMjCFDDe2Padall4A,654
253
- validmind/unit_metrics/sklearn/classification/F1.py,sha256=dq716DnpvuePv5svS2nFB_yPJQ-gYcuOinogP7Mn-QQ,659
254
- validmind/unit_metrics/sklearn/classification/Precision.py,sha256=IglJT_vY979rZQQol1MZQXW3_dkknyjRi-2wv4_KrBI,680
255
- validmind/unit_metrics/sklearn/classification/ROC_AUC.py,sha256=wyKqBSDtqiH-rO1_hA6rreKjWM4lbobSbHalvnk4G1E,651
256
- validmind/unit_metrics/sklearn/classification/Recall.py,sha256=n-5yGenSAdtD1k59TFtYvlZZXfFbDuow-pcqv3m8bOg,648
257
- validmind/utils.py,sha256=PechYJae9u_LjafOF5E88M641Re2nDu5L3SqeNlhH84,13757
258
- validmind/vm_models/__init__.py,sha256=uOV4bUElAryj_d6gWZkdokY6JXWCXyYiemzrhbZ3H_U,1219
259
- validmind/vm_models/dataset.py,sha256=nhDNF54ydLXh3hs6bwwd9uU-Uzuwquj_YnOVau9zzjM,33717
240
+ validmind/tests/test_providers.py,sha256=1tYn_sWNqifFpOp8eNvcVyJzxBjhHV5Py4FxO8opPZA,4944
241
+ validmind/unit_metrics/__init__.py,sha256=gPrZWA8hYuV7fGR2sQ5FqzSWU_4l0xkKgDq2mox2Prw,8368
242
+ validmind/unit_metrics/classification/sklearn/Accuracy.py,sha256=2Ra_OpKceY01h1dAFCqRFAwe--K2oVbCUiYjM5AH_nQ,480
243
+ validmind/unit_metrics/classification/sklearn/F1.py,sha256=Uiq5sPyNpALhApTkmLUhh76mF91bLCABB5OVHOlbmGo,437
244
+ validmind/unit_metrics/classification/sklearn/Precision.py,sha256=8zO5VDZhfT8R2VFYiV-CzsZwhsTwVAKca4nhD-qALLw,458
245
+ validmind/unit_metrics/classification/sklearn/ROC_AUC.py,sha256=5-i1xhrLg7Ix4sk7pBKDBtlqBCNRD365LnTvsekSVYs,452
246
+ validmind/unit_metrics/classification/sklearn/Recall.py,sha256=0WG3A6K9M1UmbWQKoS_wwLfq-cXVDDTIA1ZpaJNyKp8,449
247
+ validmind/unit_metrics/composite.py,sha256=3bf8oUPCevOixJIHsc_y0WTb7mG1B1Wt54RTyyx7QK0,7603
248
+ validmind/unit_metrics/regression/GiniCoefficient.py,sha256=ebh1rOob8mEmQp0EpXcneAXjc4AIfm6O3Y0_mnTahKA,984
249
+ validmind/unit_metrics/regression/HuberLoss.py,sha256=JAUxKFpXp1NtQKEJMZlGgxDlk8pFT1tY3ZcxNQPDhHM,680
250
+ validmind/unit_metrics/regression/KolmogorovSmirnovStatistic.py,sha256=DRHuFH3DqDMy56tzkN8ETwt36FCu1m-nGxK0OJCPMDk,981
251
+ validmind/unit_metrics/regression/MeanAbsolutePercentageError.py,sha256=u7dOSwSnxYsszp-0uyYwVVvMDTh9jKbWUh1gi8pbczM,471
252
+ validmind/unit_metrics/regression/MeanBiasDeviation.py,sha256=TCjnGGOSqgPYcOU8MpMZgYkYQbXKXekQNzOVIFEQ5ZA,395
253
+ validmind/unit_metrics/regression/QuantileLoss.py,sha256=9WITHNHCy-RFVZiUp-bSDrKsePKYbb0a7o13Ohvhvas,470
254
+ validmind/unit_metrics/regression/sklearn/AdjustedRSquaredScore.py,sha256=rhFpUMFI1mUaB8dGnNz_vO79VmdUIkJVRS-f1cB-6l0,636
255
+ validmind/unit_metrics/regression/sklearn/MeanAbsoluteError.py,sha256=LCNgpDw6FBHUuMZfDkJj0VEI7g3miH8xucrMQQ0Qgio,491
256
+ validmind/unit_metrics/regression/sklearn/MeanSquaredError.py,sha256=7UQnDTTO7yRRyMe3Zac9ZyjEbbD8pW_8WnZwHdVB_8U,463
257
+ validmind/unit_metrics/regression/sklearn/RSquaredScore.py,sha256=h9U5ndtnJfNNtKPZIo5n3KRp-m4akQcEo0t1iSwjVzY,420
258
+ validmind/unit_metrics/regression/sklearn/RootMeanSquaredError.py,sha256=_5IQIU9jNfmTE4NLJvaRWXbudRGV2PS7nYF5e4fkSMY,556
259
+ validmind/utils.py,sha256=8vJutsXoSi9v3_0UznWEvSm-m-TGgLv33rTcuZtsqw8,12876
260
+ validmind/vm_models/__init__.py,sha256=QjrOZpqDNJlW8cH2D0xTkPAgX9UadS_ITNHgJ4NxrFs,1160
261
+ validmind/vm_models/dataset.py,sha256=aNDR0tkqZUipTZG21ajkvJ7DumhWNT_h6E2X-binc1w,43308
260
262
  validmind/vm_models/figure.py,sha256=iSrvPcCG5sQrMkX1Fh6c5utRzaroh3bc6IlnGDOK_Eg,6651
261
263
  validmind/vm_models/model.py,sha256=f6hAy1J-UfVxLsSCu4VjpGyL-UnJWMivqkBB2Uhd2uU,4823
262
- validmind/vm_models/test/metric.py,sha256=diz1DD3i_XtppkeuYxFSPkj6kuUnpDXtnkptGWrWVUw,3965
264
+ validmind/vm_models/test/metric.py,sha256=C2AjlSOC0N72ucAaMdH3EMHXnvZ8jXlGSQwEs3S1N1g,3911
263
265
  validmind/vm_models/test/metric_result.py,sha256=Bak4GDrMlNq5NtgP5exwlPsKZgz3tWgtC6jZqtHjvqM,1987
264
266
  validmind/vm_models/test/output_template.py,sha256=njqCAMyLxwadkCWhACVskyL9-psTgmUysaeeirTVAX4,1500
265
267
  validmind/vm_models/test/result_summary.py,sha256=QJcIKJUeBf5wW3lyue6ctsi1jKSyoiAIfmjudGJiJtc,2028
266
- validmind/vm_models/test/result_wrapper.py,sha256=FU-P2GMpOxj0lFi0J5OzuGcRs1ayY5xT4F_RUtI99h8,13970
267
- validmind/vm_models/test/test.py,sha256=kXx6XtO-9M_lhdipMxNKHIaseUaC_L-qo4rOM1XUd5w,3077
268
- validmind/vm_models/test/threshold_test.py,sha256=fFpzsm0rUPdH1FTmyaRRvrvBDhbi5TE98a41AiY3HeY,4324
268
+ validmind/vm_models/test/result_wrapper.py,sha256=Fkj2KFBjy_fRiBtOLJmnplXhLn2D3cnRrQhwlopowkg,13938
269
+ validmind/vm_models/test/test.py,sha256=434PqhPcbwfCmNjYVwHGMG-rViIatb9-1nmxkdZF8Xo,3104
270
+ validmind/vm_models/test/threshold_test.py,sha256=Iy84PLsuabhZSPlxVQZ_kAo_FTqxmZ8AeN9yQDO5wMI,4270
269
271
  validmind/vm_models/test/threshold_test_result.py,sha256=EXP-g_e3NsnpkvNgYew030qVUoY6ZTHyuuFUXaq-BuM,1954
270
- validmind/vm_models/test/unit_metric.py,sha256=w25r8ls-91z8gLA1wmSJN13z5DVMOdpk9cNJnBeIs3k,2556
271
272
  validmind/vm_models/test_context.py,sha256=URm6YvK6ReRevngIIVSPmV2tdc4rRZaWbB6hlRKsOj4,9027
272
273
  validmind/vm_models/test_suite/runner.py,sha256=U93TauwLNEbAgJIzBZ9k9ip9NnlTt0gACHVgfO7J9BI,6754
273
- validmind/vm_models/test_suite/summary.py,sha256=h_r-gXsyTihCUdU4S5fzca832cI6FTMOVf1BZvcSPVU,4583
274
+ validmind/vm_models/test_suite/summary.py,sha256=roSzR-wWs6_eoKq-yDA-cMi5pA0K3H7cpR2TUCG0uog,4555
274
275
  validmind/vm_models/test_suite/test.py,sha256=cIa-6_YkFp7Io4wBkr09aFNmljmUFSagV4JreLd1Q6Y,5285
275
- validmind/vm_models/test_suite/test_suite.py,sha256=X6bal6m_8l-cKnXKlz_CJAUY_FKdJ1B3zLqYLlOncwE,6244
276
- validmind-2.0.7.dist-info/LICENSE,sha256=XonPUfwjvrC5Ombl3y-ko0Wubb1xdG_7nzvIbkZRKHw,35772
277
- validmind-2.0.7.dist-info/METADATA,sha256=sC6gORZX37LPNc4PQvl6-YmEdlLa0TLwJ1ySm_OI2qE,3463
278
- validmind-2.0.7.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
279
- validmind-2.0.7.dist-info/entry_points.txt,sha256=HuW7YyOv9u_OEWpViQXtv0nfoI67uieJHawKWA4Hv9A,76
280
- validmind-2.0.7.dist-info/RECORD,,
276
+ validmind/vm_models/test_suite/test_suite.py,sha256=Cns2wL54v0T5Mv5_HJb3kMeaa4rtycdqT8KxK9_rWEU,6279
277
+ validmind-2.1.0.dist-info/LICENSE,sha256=XonPUfwjvrC5Ombl3y-ko0Wubb1xdG_7nzvIbkZRKHw,35772
278
+ validmind-2.1.0.dist-info/METADATA,sha256=wId7ww5qTi3rRptAQIQc4BYkTRxi5Zq0oBH8VeRDyDs,3826
279
+ validmind-2.1.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
280
+ validmind-2.1.0.dist-info/entry_points.txt,sha256=HuW7YyOv9u_OEWpViQXtv0nfoI67uieJHawKWA4Hv9A,76
281
+ validmind-2.1.0.dist-info/RECORD,,
@@ -1,62 +0,0 @@
1
- # Copyright © 2023-2024 ValidMind Inc. All rights reserved.
2
- # See the LICENSE file in the root of this repository for details.
3
- # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
-
5
- """All Tests for ValidMind"""
6
-
7
- from typing import Any, Dict, Protocol
8
-
9
-
10
- class ExternalTest(Protocol):
11
- """Protocol for user-defined tests"""
12
-
13
- test_type: str
14
-
15
- def description(self) -> str:
16
- """Return the test description (optional)
17
-
18
- If this method is not implemented, the test description will be
19
- automatically generated from the docstring of the test class.
20
-
21
- Returns:
22
- str: The test description
23
- """
24
- ...
25
-
26
- def run(self) -> Dict[str, Any]:
27
- """Run the test and return the results
28
-
29
- Returns:
30
- dict: The test results object to be saved
31
- """
32
- ...
33
-
34
- def summary(self, test_results: Dict[str, Any]) -> Dict[str, Any]:
35
- """Summarize the test results
36
-
37
- Args:
38
- test_results (dict): The test results object
39
-
40
- Returns:
41
- dict: The test summary object to be displayed
42
- """
43
- ...
44
-
45
-
46
- class ExternalTestProvider(Protocol):
47
- """Protocol for user-defined test providers"""
48
-
49
- def load_test(self, test_id: str) -> ExternalTest:
50
- """Load the test by test ID
51
-
52
- Args:
53
- test_id (str): The test ID (does not contain the namespace under which
54
- the test is registered)
55
-
56
- Returns:
57
- ExternalTest: The test object
58
-
59
- Raises:
60
- FileNotFoundError: If the test is not found
61
- """
62
- ...
@@ -1,128 +0,0 @@
1
- # Copyright © 2023-2024 ValidMind Inc. All rights reserved.
2
- # See the LICENSE file in the root of this repository for details.
3
- # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
-
5
- from dataclasses import dataclass
6
-
7
- import numpy as np
8
- import plotly.figure_factory as ff
9
- from sklearn import metrics
10
-
11
- from validmind.vm_models import Figure, Metric
12
-
13
-
14
- @dataclass
15
- class LogRegressionConfusionMatrix(Metric):
16
- """
17
- Generates a confusion matrix for logistic regression model performance, utilizing thresholded probabilities for
18
- classification assessments.
19
-
20
- **Purpose**: The Logistic Regression Confusion Matrix is a metric used to measure the performance of a logistic
21
- regression classification model. This metric is particularly useful for scenarios where a model's predictions are
22
- formulated by thresholding probabilities. The main advantage of this approach is that it includes true positives,
23
- true negatives, false positives, and false negatives in its assessment, providing a more comprehensive overview of
24
- the model's effectiveness in distinguishing between correct and incorrect classifications.
25
-
26
- **Test Mechanism**: The methodology behind the Logistic Regression Confusion Matrix uses the
27
- `sklearn.metrics.confusion_matrix` function from the Python library to generate a matrix. This matrix is created by
28
- comparing the model's predicted probabilities, which are initially converted to binary predictions using a
29
- predetermined cut-off threshold (default is 0.5), against the actual classes. The matrix's design consists of the
30
- predicted class labels forming the x-axis, and the actual class labels forming the y-axis, with each cell
31
- containing the record of true positives, true negatives, false positives, and false negatives respectively.
32
-
33
- **Signs of High Risk**:
34
- - A significant number of false positives and false negatives, indicating that the model is incorrectly classifying
35
- instances.
36
- - The counts of true positives and true negatives being substantially lower than projected, positioning this as a
37
- potential high-risk indicator.
38
-
39
- **Strengths**:
40
- - Simple, intuitive, and provides a comprehensive understanding of the model's performance.
41
- - Provides a detailed breakdown of error types, improving transparency.
42
- - Offers flexible adaptation for diverse prediction scenarios by allowing adjustments to the cut-off threshold, and
43
- enabling exploration of trade-offs between precision (minimizing false positives) and recall (minimizing false
44
- negatives).
45
-
46
- **Limitations**:
47
- - Acceptable performance on majority classes but potential poor performance on minority classes in imbalanced
48
- datasets, as the confusion matrix may supply misleading results.
49
- - Lack of insight into the severity of the mistakes and the cost trade-off between different types of
50
- misclassification.
51
- - Selection of the cut-off threshold can significantly alter the interpretation, and a poorly chosen threshold may
52
- lead to erroneous conclusions.
53
- """
54
-
55
- name = "log_regression_confusion_matrix"
56
- required_inputs = ["model", "dataset"]
57
- metadata = {
58
- "task_types": ["classification"],
59
- "tags": ["visualization", "model_performance", "logistic_regression"],
60
- }
61
-
62
- default_params = {
63
- "cut_off_threshold": 0.5, # Add a cut_off_threshold parameter
64
- }
65
-
66
- def run(self):
67
- cut_off_threshold = self.default_parameters["cut_off_threshold"]
68
-
69
- y_true = self.inputs.dataset.y
70
- y_labels = np.unique(y_true)
71
- y_labels.sort()
72
-
73
- y_pred_prob = self.inputs.model.predict_proba(self.inputs.dataset.x)
74
- y_pred = np.where(y_pred_prob > cut_off_threshold, 1, 0)
75
- y_true = y_true.astype(y_pred.dtype)
76
-
77
- cm = metrics.confusion_matrix(y_true, y_pred, labels=y_labels)
78
- tn, fp, fn, tp = cm.ravel()
79
-
80
- # Custom text to display on the heatmap cells
81
- text = [
82
- [
83
- f"<b>True Negatives (TN)</b><br />{tn}",
84
- f"<b>False Positives (FP)</b><br />{fp}",
85
- ],
86
- [
87
- f"<b>False Negatives (FN)</b><br />{fn}",
88
- f"<b>True Positives (TP)</b><br />{tp}",
89
- ],
90
- ]
91
-
92
- fig = ff.create_annotated_heatmap(
93
- [[tn, fp], [fn, tp]],
94
- x=[0, 1],
95
- y=[0, 1],
96
- colorscale="Blues",
97
- annotation_text=text,
98
- )
99
- # Reverse the xaxis so that 1 is on the left
100
- fig["layout"]["xaxis"]["autorange"] = "reversed"
101
-
102
- fig["data"][0][
103
- "hovertemplate"
104
- ] = "True Label:%{y}<br>Predicted Label:%{x}<br>Count:%{z}<extra></extra>"
105
-
106
- fig.update_layout(
107
- xaxis=dict(title="Predicted label", constrain="domain"),
108
- yaxis=dict(title="True label", scaleanchor="x", scaleratio=1),
109
- autosize=False,
110
- width=600,
111
- height=600,
112
- )
113
-
114
- return self.cache_results(
115
- metric_value={
116
- "tn": tn,
117
- "fp": fp,
118
- "fn": fn,
119
- "tp": tp,
120
- },
121
- figures=[
122
- Figure(
123
- for_object=self,
124
- key="confusion_matrix",
125
- figure=fig,
126
- )
127
- ],
128
- )