validmind 2.7.5__py3-none-any.whl → 2.7.7__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 (149) hide show
  1. validmind/__init__.py +2 -0
  2. validmind/__version__.py +1 -1
  3. validmind/api_client.py +8 -1
  4. validmind/datasets/credit_risk/lending_club.py +352 -87
  5. validmind/html_templates/content_blocks.py +1 -1
  6. validmind/tests/__types__.py +17 -0
  7. validmind/tests/data_validation/ACFandPACFPlot.py +6 -2
  8. validmind/tests/data_validation/AutoMA.py +2 -2
  9. validmind/tests/data_validation/BivariateScatterPlots.py +4 -2
  10. validmind/tests/data_validation/BoxPierce.py +2 -2
  11. validmind/tests/data_validation/ClassImbalance.py +2 -1
  12. validmind/tests/data_validation/DatasetDescription.py +11 -2
  13. validmind/tests/data_validation/DatasetSplit.py +2 -2
  14. validmind/tests/data_validation/DickeyFullerGLS.py +2 -2
  15. validmind/tests/data_validation/FeatureTargetCorrelationPlot.py +8 -2
  16. validmind/tests/data_validation/HighCardinality.py +9 -2
  17. validmind/tests/data_validation/HighPearsonCorrelation.py +18 -4
  18. validmind/tests/data_validation/IQROutliersBarPlot.py +9 -2
  19. validmind/tests/data_validation/LaggedCorrelationHeatmap.py +2 -2
  20. validmind/tests/data_validation/MissingValuesBarPlot.py +12 -9
  21. validmind/tests/data_validation/MutualInformation.py +6 -8
  22. validmind/tests/data_validation/PearsonCorrelationMatrix.py +2 -2
  23. validmind/tests/data_validation/ProtectedClassesCombination.py +6 -1
  24. validmind/tests/data_validation/ProtectedClassesDescription.py +1 -1
  25. validmind/tests/data_validation/ProtectedClassesDisparity.py +4 -5
  26. validmind/tests/data_validation/ProtectedClassesThresholdOptimizer.py +1 -4
  27. validmind/tests/data_validation/RollingStatsPlot.py +21 -10
  28. validmind/tests/data_validation/ScatterPlot.py +3 -5
  29. validmind/tests/data_validation/ScoreBandDefaultRates.py +2 -1
  30. validmind/tests/data_validation/SeasonalDecompose.py +12 -2
  31. validmind/tests/data_validation/Skewness.py +6 -3
  32. validmind/tests/data_validation/SpreadPlot.py +8 -3
  33. validmind/tests/data_validation/TabularCategoricalBarPlots.py +4 -2
  34. validmind/tests/data_validation/TabularDateTimeHistograms.py +2 -2
  35. validmind/tests/data_validation/TargetRateBarPlots.py +4 -3
  36. validmind/tests/data_validation/TimeSeriesFrequency.py +7 -2
  37. validmind/tests/data_validation/TimeSeriesMissingValues.py +14 -10
  38. validmind/tests/data_validation/TimeSeriesOutliers.py +1 -5
  39. validmind/tests/data_validation/WOEBinPlots.py +2 -2
  40. validmind/tests/data_validation/WOEBinTable.py +11 -9
  41. validmind/tests/data_validation/nlp/CommonWords.py +2 -2
  42. validmind/tests/data_validation/nlp/Hashtags.py +2 -2
  43. validmind/tests/data_validation/nlp/LanguageDetection.py +9 -6
  44. validmind/tests/data_validation/nlp/Mentions.py +9 -6
  45. validmind/tests/data_validation/nlp/PolarityAndSubjectivity.py +2 -2
  46. validmind/tests/data_validation/nlp/Punctuations.py +4 -2
  47. validmind/tests/data_validation/nlp/Sentiment.py +2 -2
  48. validmind/tests/data_validation/nlp/StopWords.py +5 -4
  49. validmind/tests/data_validation/nlp/TextDescription.py +2 -2
  50. validmind/tests/data_validation/nlp/Toxicity.py +2 -2
  51. validmind/tests/model_validation/BertScore.py +2 -2
  52. validmind/tests/model_validation/BleuScore.py +2 -2
  53. validmind/tests/model_validation/ClusterSizeDistribution.py +2 -2
  54. validmind/tests/model_validation/ContextualRecall.py +2 -2
  55. validmind/tests/model_validation/FeaturesAUC.py +2 -2
  56. validmind/tests/model_validation/MeteorScore.py +2 -2
  57. validmind/tests/model_validation/ModelPredictionResiduals.py +2 -2
  58. validmind/tests/model_validation/RegardScore.py +6 -2
  59. validmind/tests/model_validation/RegressionResidualsPlot.py +4 -3
  60. validmind/tests/model_validation/RougeScore.py +6 -5
  61. validmind/tests/model_validation/TimeSeriesPredictionWithCI.py +11 -2
  62. validmind/tests/model_validation/TokenDisparity.py +2 -2
  63. validmind/tests/model_validation/ToxicityScore.py +10 -2
  64. validmind/tests/model_validation/embeddings/ClusterDistribution.py +9 -3
  65. validmind/tests/model_validation/embeddings/CosineSimilarityComparison.py +16 -2
  66. validmind/tests/model_validation/embeddings/CosineSimilarityDistribution.py +5 -3
  67. validmind/tests/model_validation/embeddings/CosineSimilarityHeatmap.py +2 -2
  68. validmind/tests/model_validation/embeddings/DescriptiveAnalytics.py +14 -4
  69. validmind/tests/model_validation/embeddings/EmbeddingsVisualization2D.py +2 -2
  70. validmind/tests/model_validation/embeddings/EuclideanDistanceComparison.py +16 -2
  71. validmind/tests/model_validation/embeddings/EuclideanDistanceHeatmap.py +2 -2
  72. validmind/tests/model_validation/embeddings/PCAComponentsPairwisePlots.py +4 -5
  73. validmind/tests/model_validation/embeddings/StabilityAnalysisKeyword.py +4 -2
  74. validmind/tests/model_validation/embeddings/StabilityAnalysisRandomNoise.py +4 -2
  75. validmind/tests/model_validation/embeddings/StabilityAnalysisSynonyms.py +4 -2
  76. validmind/tests/model_validation/embeddings/StabilityAnalysisTranslation.py +4 -2
  77. validmind/tests/model_validation/embeddings/TSNEComponentsPairwisePlots.py +8 -6
  78. validmind/tests/model_validation/embeddings/utils.py +11 -1
  79. validmind/tests/model_validation/ragas/AnswerCorrectness.py +2 -1
  80. validmind/tests/model_validation/ragas/AspectCritic.py +11 -7
  81. validmind/tests/model_validation/ragas/ContextEntityRecall.py +2 -1
  82. validmind/tests/model_validation/ragas/ContextPrecision.py +2 -1
  83. validmind/tests/model_validation/ragas/ContextPrecisionWithoutReference.py +2 -1
  84. validmind/tests/model_validation/ragas/ContextRecall.py +2 -1
  85. validmind/tests/model_validation/ragas/Faithfulness.py +2 -1
  86. validmind/tests/model_validation/ragas/NoiseSensitivity.py +2 -1
  87. validmind/tests/model_validation/ragas/ResponseRelevancy.py +2 -1
  88. validmind/tests/model_validation/ragas/SemanticSimilarity.py +2 -1
  89. validmind/tests/model_validation/sklearn/CalibrationCurve.py +3 -2
  90. validmind/tests/model_validation/sklearn/ClassifierThresholdOptimization.py +2 -5
  91. validmind/tests/model_validation/sklearn/ClusterCosineSimilarity.py +5 -2
  92. validmind/tests/model_validation/sklearn/ConfusionMatrix.py +2 -2
  93. validmind/tests/model_validation/sklearn/FeatureImportance.py +1 -14
  94. validmind/tests/model_validation/sklearn/HyperParametersTuning.py +6 -3
  95. validmind/tests/model_validation/sklearn/KMeansClustersOptimization.py +2 -2
  96. validmind/tests/model_validation/sklearn/MinimumROCAUCScore.py +8 -4
  97. validmind/tests/model_validation/sklearn/ModelParameters.py +1 -0
  98. validmind/tests/model_validation/sklearn/OverfitDiagnosis.py +3 -3
  99. validmind/tests/model_validation/sklearn/PermutationFeatureImportance.py +2 -2
  100. validmind/tests/model_validation/sklearn/PopulationStabilityIndex.py +20 -16
  101. validmind/tests/model_validation/sklearn/PrecisionRecallCurve.py +4 -2
  102. validmind/tests/model_validation/sklearn/ROCCurve.py +1 -1
  103. validmind/tests/model_validation/sklearn/RegressionR2Square.py +7 -9
  104. validmind/tests/model_validation/sklearn/RegressionR2SquareComparison.py +1 -3
  105. validmind/tests/model_validation/sklearn/SHAPGlobalImportance.py +2 -1
  106. validmind/tests/model_validation/sklearn/ScoreProbabilityAlignment.py +2 -1
  107. validmind/tests/model_validation/sklearn/SilhouettePlot.py +5 -3
  108. validmind/tests/model_validation/sklearn/TrainingTestDegradation.py +9 -1
  109. validmind/tests/model_validation/sklearn/WeakspotsDiagnosis.py +1 -1
  110. validmind/tests/model_validation/statsmodels/CumulativePredictionProbabilities.py +11 -4
  111. validmind/tests/model_validation/statsmodels/DurbinWatsonTest.py +1 -3
  112. validmind/tests/model_validation/statsmodels/GINITable.py +7 -15
  113. validmind/tests/model_validation/statsmodels/Lilliefors.py +2 -2
  114. validmind/tests/model_validation/statsmodels/RegressionCoeffs.py +1 -1
  115. validmind/tests/model_validation/statsmodels/RegressionFeatureSignificance.py +2 -2
  116. validmind/tests/model_validation/statsmodels/RegressionModelForecastPlotLevels.py +5 -2
  117. validmind/tests/model_validation/statsmodels/RegressionModelSensitivityPlot.py +5 -2
  118. validmind/tests/model_validation/statsmodels/RegressionModelSummary.py +7 -7
  119. validmind/tests/model_validation/statsmodels/RegressionPermutationFeatureImportance.py +2 -2
  120. validmind/tests/ongoing_monitoring/CalibrationCurveDrift.py +220 -0
  121. validmind/tests/ongoing_monitoring/ClassDiscriminationDrift.py +155 -0
  122. validmind/tests/ongoing_monitoring/ClassImbalanceDrift.py +146 -0
  123. validmind/tests/ongoing_monitoring/ClassificationAccuracyDrift.py +148 -0
  124. validmind/tests/ongoing_monitoring/ConfusionMatrixDrift.py +193 -0
  125. validmind/tests/ongoing_monitoring/CumulativePredictionProbabilitiesDrift.py +178 -0
  126. validmind/tests/ongoing_monitoring/FeatureDrift.py +120 -120
  127. validmind/tests/ongoing_monitoring/PredictionAcrossEachFeature.py +18 -23
  128. validmind/tests/ongoing_monitoring/PredictionCorrelation.py +86 -44
  129. validmind/tests/ongoing_monitoring/PredictionProbabilitiesHistogramDrift.py +204 -0
  130. validmind/tests/ongoing_monitoring/PredictionQuantilesAcrossFeatures.py +98 -0
  131. validmind/tests/ongoing_monitoring/ROCCurveDrift.py +150 -0
  132. validmind/tests/ongoing_monitoring/ScoreBandsDrift.py +212 -0
  133. validmind/tests/ongoing_monitoring/ScorecardHistogramDrift.py +209 -0
  134. validmind/tests/ongoing_monitoring/TargetPredictionDistributionPlot.py +91 -13
  135. validmind/tests/prompt_validation/Bias.py +13 -9
  136. validmind/tests/prompt_validation/Clarity.py +13 -9
  137. validmind/tests/prompt_validation/Conciseness.py +13 -9
  138. validmind/tests/prompt_validation/Delimitation.py +13 -9
  139. validmind/tests/prompt_validation/NegativeInstruction.py +14 -11
  140. validmind/tests/prompt_validation/Robustness.py +6 -2
  141. validmind/tests/prompt_validation/Specificity.py +13 -9
  142. validmind/tests/run.py +6 -0
  143. validmind/utils.py +7 -8
  144. validmind/vm_models/dataset/dataset.py +0 -4
  145. {validmind-2.7.5.dist-info → validmind-2.7.7.dist-info}/METADATA +2 -3
  146. {validmind-2.7.5.dist-info → validmind-2.7.7.dist-info}/RECORD +149 -138
  147. {validmind-2.7.5.dist-info → validmind-2.7.7.dist-info}/WHEEL +1 -1
  148. {validmind-2.7.5.dist-info → validmind-2.7.7.dist-info}/LICENSE +0 -0
  149. {validmind-2.7.5.dist-info → validmind-2.7.7.dist-info}/entry_points.txt +0 -0
@@ -2,7 +2,7 @@
2
2
  # See the LICENSE file in the root of this repository for details.
3
3
  # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
4
 
5
- from validmind import tags, tasks
5
+ from validmind import RawData, tags, tasks
6
6
  from validmind.errors import MissingRequiredTestInputError
7
7
 
8
8
  from .ai_powered_test import (
@@ -106,13 +106,16 @@ def NegativeInstruction(model, min_threshold=7):
106
106
  explanation = get_explanation(response)
107
107
 
108
108
  passed = score > min_threshold
109
- result = [
110
- {
111
- "Score": score,
112
- "Threshold": min_threshold,
113
- "Explanation": explanation,
114
- "Pass/Fail": "Pass" if passed else "Fail",
115
- }
116
- ]
117
-
118
- return result, passed
109
+
110
+ return (
111
+ [
112
+ {
113
+ "Score": score,
114
+ "Threshold": min_threshold,
115
+ "Explanation": explanation,
116
+ "Pass/Fail": "Pass" if passed else "Fail",
117
+ }
118
+ ],
119
+ passed,
120
+ RawData(model_response=response),
121
+ )
@@ -4,7 +4,7 @@
4
4
 
5
5
  import pandas as pd
6
6
 
7
- from validmind import tags, tasks
7
+ from validmind import RawData, tags, tasks
8
8
  from validmind.errors import MissingRequiredTestInputError, SkipTestError
9
9
 
10
10
  from .ai_powered_test import call_model, missing_prompt_message
@@ -127,4 +127,8 @@ def Robustness(model, dataset, num_tests=10):
127
127
  for generated_input, response in zip(generated_inputs, responses)
128
128
  ]
129
129
 
130
- return results, all(result["Pass/Fail"] == "Pass" for result in results)
130
+ return (
131
+ results,
132
+ all(result["Pass/Fail"] == "Pass" for result in results),
133
+ RawData(generated_inputs=generated_inputs, responses=responses),
134
+ )
@@ -2,7 +2,7 @@
2
2
  # See the LICENSE file in the root of this repository for details.
3
3
  # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
4
 
5
- from validmind import tags, tasks
5
+ from validmind import RawData, tags, tasks
6
6
  from validmind.errors import MissingRequiredTestInputError
7
7
 
8
8
  from .ai_powered_test import (
@@ -103,11 +103,15 @@ def Specificity(model, min_threshold=7):
103
103
 
104
104
  passed = score > min_threshold
105
105
 
106
- return [
107
- {
108
- "Score": score,
109
- "Threshold": min_threshold,
110
- "Explanation": explanation,
111
- "Pass/Fail": "Pass" if passed else "Fail",
112
- }
113
- ], passed
106
+ return (
107
+ [
108
+ {
109
+ "Score": score,
110
+ "Threshold": min_threshold,
111
+ "Explanation": explanation,
112
+ "Pass/Fail": "Pass" if passed else "Fail",
113
+ }
114
+ ],
115
+ passed,
116
+ RawData(response=response),
117
+ )
validmind/tests/run.py CHANGED
@@ -7,6 +7,7 @@ import subprocess
7
7
  import time
8
8
  from datetime import datetime
9
9
  from inspect import getdoc
10
+ import pprint
10
11
  from typing import Any, Callable, Dict, List, Optional, Tuple, Union
11
12
  from uuid import uuid4
12
13
 
@@ -396,3 +397,8 @@ def run_test( # noqa: C901
396
397
  result.show()
397
398
 
398
399
  return result
400
+
401
+
402
+ def print_env():
403
+ e = _get_run_metadata()
404
+ pprint.pp(e)
validmind/utils.py CHANGED
@@ -23,7 +23,6 @@ import seaborn as sns
23
23
  from IPython.core import getipython
24
24
  from IPython.display import HTML
25
25
  from IPython.display import display as ipy_display
26
- from latex2mathml.converter import convert
27
26
  from matplotlib.axes._axes import _log as matplotlib_axes_logger
28
27
  from numpy import ndarray
29
28
  from sklearn.exceptions import UndefinedMetricWarning
@@ -491,7 +490,7 @@ def display(widget_or_html, syntax_highlighting=True, mathjax=True):
491
490
  ipy_display(HTML(widget_or_html))
492
491
  # if html we can auto-detect if we actually need syntax highlighting or MathJax
493
492
  syntax_highlighting = 'class="language-' in widget_or_html
494
- mathjax = "$$" in widget_or_html
493
+ mathjax = "math/tex" in widget_or_html
495
494
  else:
496
495
  ipy_display(widget_or_html)
497
496
 
@@ -510,20 +509,20 @@ def md_to_html(md: str, mathml=False) -> str:
510
509
  )(md)
511
510
 
512
511
  if not mathml:
513
- # return the html as is (with latex that will be rendered by MathJax)
514
512
  return html
515
513
 
516
- # convert the latex to MathML which CKeditor can render
514
+ # convert the latex to mathjax
517
515
  math_block_pattern = re.compile(r'<div class="math">\$\$([\s\S]*?)\$\$</div>')
518
516
  html = math_block_pattern.sub(
519
- lambda match: "<p>{}</p>".format(convert(match.group(1), display="block")), html
517
+ lambda match: '<script type="math/tex; mode=display">{}</script>'.format(
518
+ match.group(1)
519
+ ),
520
+ html,
520
521
  )
521
522
 
522
523
  inline_math_pattern = re.compile(r'<span class="math">\\\((.*?)\\\)</span>')
523
524
  html = inline_math_pattern.sub(
524
- lambda match: "<span>{}</span>".format(
525
- convert(match.group(1), display="inline")
526
- ),
525
+ lambda match: '<script type="math/tex">{}</script>'.format(match.group(1)),
527
526
  html,
528
527
  )
529
528
 
@@ -369,10 +369,6 @@ class VMDataset(VMInput):
369
369
  # reset feature columns to exclude the new extra column
370
370
  self._set_feature_columns()
371
371
 
372
- logger.info(
373
- f"Extra column {column_name} with {len(column_values)} values added to the dataset"
374
- )
375
-
376
372
  @property
377
373
  def df(self) -> pd.DataFrame:
378
374
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: validmind
3
- Version: 2.7.5
3
+ Version: 2.7.7
4
4
  Summary: ValidMind Library
5
5
  License: Commercial License
6
6
  Author: Andres Rodriguez
@@ -26,7 +26,6 @@ Requires-Dist: ipywidgets
26
26
  Requires-Dist: kaleido (>=0.2.1,!=0.2.1.post1)
27
27
  Requires-Dist: langchain-openai (>=0.1.8) ; extra == "all" or extra == "llm"
28
28
  Requires-Dist: langdetect
29
- Requires-Dist: latex2mathml (>=3.77.0)
30
29
  Requires-Dist: llvmlite ; python_version >= "3.8" and python_full_version <= "3.11.0"
31
30
  Requires-Dist: matplotlib
32
31
  Requires-Dist: mistune (>=3.0.2,<4.0.0)
@@ -44,7 +43,7 @@ Requires-Dist: python-dotenv
44
43
  Requires-Dist: ragas (>=0.2.3) ; extra == "all" or extra == "llm"
45
44
  Requires-Dist: rouge (>=1)
46
45
  Requires-Dist: rpy2 (>=3.5.10,<4.0.0) ; extra == "all" or extra == "r-support"
47
- Requires-Dist: scikit-learn (!=1.6.0)
46
+ Requires-Dist: scikit-learn (<1.6.0)
48
47
  Requires-Dist: scipy
49
48
  Requires-Dist: scorecardpy (>=0.1.9.6,<0.2.0.0)
50
49
  Requires-Dist: seaborn