validmind 2.8.28__py3-none-any.whl → 2.9.1__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 (233) hide show
  1. validmind/__version__.py +1 -1
  2. validmind/ai/utils.py +4 -24
  3. validmind/api_client.py +6 -17
  4. validmind/logging.py +48 -0
  5. validmind/models/function.py +11 -3
  6. validmind/tests/__init__.py +2 -0
  7. validmind/tests/__types__.py +18 -0
  8. validmind/tests/data_validation/ACFandPACFPlot.py +3 -1
  9. validmind/tests/data_validation/ADF.py +3 -1
  10. validmind/tests/data_validation/AutoAR.py +3 -1
  11. validmind/tests/data_validation/AutoMA.py +5 -1
  12. validmind/tests/data_validation/AutoStationarity.py +5 -1
  13. validmind/tests/data_validation/BivariateScatterPlots.py +3 -1
  14. validmind/tests/data_validation/BoxPierce.py +4 -1
  15. validmind/tests/data_validation/ChiSquaredFeaturesTable.py +1 -1
  16. validmind/tests/data_validation/ClassImbalance.py +1 -1
  17. validmind/tests/data_validation/DatasetDescription.py +4 -1
  18. validmind/tests/data_validation/DatasetSplit.py +3 -2
  19. validmind/tests/data_validation/DescriptiveStatistics.py +3 -1
  20. validmind/tests/data_validation/DickeyFullerGLS.py +3 -1
  21. validmind/tests/data_validation/Duplicates.py +3 -1
  22. validmind/tests/data_validation/EngleGrangerCoint.py +6 -1
  23. validmind/tests/data_validation/FeatureTargetCorrelationPlot.py +3 -1
  24. validmind/tests/data_validation/HighCardinality.py +3 -1
  25. validmind/tests/data_validation/HighPearsonCorrelation.py +4 -1
  26. validmind/tests/data_validation/IQROutliersBarPlot.py +4 -1
  27. validmind/tests/data_validation/IQROutliersTable.py +6 -1
  28. validmind/tests/data_validation/IsolationForestOutliers.py +3 -1
  29. validmind/tests/data_validation/JarqueBera.py +3 -1
  30. validmind/tests/data_validation/KPSS.py +3 -1
  31. validmind/tests/data_validation/LJungBox.py +3 -1
  32. validmind/tests/data_validation/LaggedCorrelationHeatmap.py +6 -1
  33. validmind/tests/data_validation/MissingValues.py +5 -1
  34. validmind/tests/data_validation/MissingValuesBarPlot.py +3 -1
  35. validmind/tests/data_validation/MutualInformation.py +4 -1
  36. validmind/tests/data_validation/PearsonCorrelationMatrix.py +3 -1
  37. validmind/tests/data_validation/PhillipsPerronArch.py +3 -1
  38. validmind/tests/data_validation/ProtectedClassesCombination.py +5 -1
  39. validmind/tests/data_validation/ProtectedClassesDescription.py +5 -1
  40. validmind/tests/data_validation/ProtectedClassesDisparity.py +5 -3
  41. validmind/tests/data_validation/ProtectedClassesThresholdOptimizer.py +9 -2
  42. validmind/tests/data_validation/RollingStatsPlot.py +5 -1
  43. validmind/tests/data_validation/RunsTest.py +1 -1
  44. validmind/tests/data_validation/ScatterPlot.py +2 -1
  45. validmind/tests/data_validation/ScoreBandDefaultRates.py +3 -1
  46. validmind/tests/data_validation/SeasonalDecompose.py +6 -1
  47. validmind/tests/data_validation/ShapiroWilk.py +4 -1
  48. validmind/tests/data_validation/Skewness.py +3 -1
  49. validmind/tests/data_validation/SpreadPlot.py +3 -1
  50. validmind/tests/data_validation/TabularCategoricalBarPlots.py +4 -1
  51. validmind/tests/data_validation/TabularDateTimeHistograms.py +3 -1
  52. validmind/tests/data_validation/TabularDescriptionTables.py +4 -1
  53. validmind/tests/data_validation/TabularNumericalHistograms.py +3 -1
  54. validmind/tests/data_validation/TargetRateBarPlots.py +4 -1
  55. validmind/tests/data_validation/TimeSeriesDescription.py +1 -1
  56. validmind/tests/data_validation/TimeSeriesDescriptiveStatistics.py +1 -1
  57. validmind/tests/data_validation/TimeSeriesFrequency.py +5 -1
  58. validmind/tests/data_validation/TimeSeriesHistogram.py +4 -1
  59. validmind/tests/data_validation/TimeSeriesLinePlot.py +3 -1
  60. validmind/tests/data_validation/TimeSeriesMissingValues.py +6 -1
  61. validmind/tests/data_validation/TimeSeriesOutliers.py +5 -1
  62. validmind/tests/data_validation/TooManyZeroValues.py +6 -1
  63. validmind/tests/data_validation/UniqueRows.py +5 -1
  64. validmind/tests/data_validation/WOEBinPlots.py +4 -1
  65. validmind/tests/data_validation/WOEBinTable.py +5 -1
  66. validmind/tests/data_validation/ZivotAndrewsArch.py +3 -1
  67. validmind/tests/data_validation/nlp/CommonWords.py +2 -1
  68. validmind/tests/data_validation/nlp/Hashtags.py +2 -1
  69. validmind/tests/data_validation/nlp/LanguageDetection.py +4 -1
  70. validmind/tests/data_validation/nlp/Mentions.py +3 -1
  71. validmind/tests/data_validation/nlp/PolarityAndSubjectivity.py +6 -1
  72. validmind/tests/data_validation/nlp/Punctuations.py +2 -1
  73. validmind/tests/data_validation/nlp/Sentiment.py +3 -1
  74. validmind/tests/data_validation/nlp/StopWords.py +2 -1
  75. validmind/tests/data_validation/nlp/TextDescription.py +3 -1
  76. validmind/tests/data_validation/nlp/Toxicity.py +3 -1
  77. validmind/tests/load.py +91 -17
  78. validmind/tests/model_validation/BertScore.py +6 -3
  79. validmind/tests/model_validation/BleuScore.py +6 -1
  80. validmind/tests/model_validation/ClusterSizeDistribution.py +5 -1
  81. validmind/tests/model_validation/ContextualRecall.py +6 -1
  82. validmind/tests/model_validation/FeaturesAUC.py +5 -1
  83. validmind/tests/model_validation/MeteorScore.py +6 -1
  84. validmind/tests/model_validation/ModelMetadata.py +2 -1
  85. validmind/tests/model_validation/ModelPredictionResiduals.py +10 -2
  86. validmind/tests/model_validation/RegardScore.py +7 -1
  87. validmind/tests/model_validation/RegressionResidualsPlot.py +5 -1
  88. validmind/tests/model_validation/RougeScore.py +8 -1
  89. validmind/tests/model_validation/TimeSeriesPredictionWithCI.py +8 -1
  90. validmind/tests/model_validation/TimeSeriesPredictionsPlot.py +7 -1
  91. validmind/tests/model_validation/TimeSeriesR2SquareBySegments.py +6 -1
  92. validmind/tests/model_validation/TokenDisparity.py +6 -1
  93. validmind/tests/model_validation/ToxicityScore.py +6 -1
  94. validmind/tests/model_validation/embeddings/ClusterDistribution.py +6 -1
  95. validmind/tests/model_validation/embeddings/CosineSimilarityComparison.py +6 -1
  96. validmind/tests/model_validation/embeddings/CosineSimilarityDistribution.py +6 -1
  97. validmind/tests/model_validation/embeddings/CosineSimilarityHeatmap.py +7 -3
  98. validmind/tests/model_validation/embeddings/DescriptiveAnalytics.py +6 -1
  99. validmind/tests/model_validation/embeddings/EmbeddingsVisualization2D.py +4 -3
  100. validmind/tests/model_validation/embeddings/EuclideanDistanceComparison.py +6 -1
  101. validmind/tests/model_validation/embeddings/EuclideanDistanceHeatmap.py +7 -3
  102. validmind/tests/model_validation/embeddings/PCAComponentsPairwisePlots.py +6 -1
  103. validmind/tests/model_validation/embeddings/StabilityAnalysisKeyword.py +5 -2
  104. validmind/tests/model_validation/embeddings/StabilityAnalysisRandomNoise.py +5 -1
  105. validmind/tests/model_validation/embeddings/StabilityAnalysisSynonyms.py +4 -1
  106. validmind/tests/model_validation/embeddings/StabilityAnalysisTranslation.py +5 -1
  107. validmind/tests/model_validation/embeddings/TSNEComponentsPairwisePlots.py +9 -6
  108. validmind/tests/model_validation/ragas/AnswerCorrectness.py +8 -5
  109. validmind/tests/model_validation/ragas/AspectCritic.py +11 -8
  110. validmind/tests/model_validation/ragas/ContextEntityRecall.py +5 -2
  111. validmind/tests/model_validation/ragas/ContextPrecision.py +5 -2
  112. validmind/tests/model_validation/ragas/ContextPrecisionWithoutReference.py +5 -2
  113. validmind/tests/model_validation/ragas/ContextRecall.py +6 -2
  114. validmind/tests/model_validation/ragas/Faithfulness.py +9 -5
  115. validmind/tests/model_validation/ragas/NoiseSensitivity.py +10 -7
  116. validmind/tests/model_validation/ragas/ResponseRelevancy.py +9 -6
  117. validmind/tests/model_validation/ragas/SemanticSimilarity.py +7 -4
  118. validmind/tests/model_validation/sklearn/AdjustedMutualInformation.py +5 -1
  119. validmind/tests/model_validation/sklearn/AdjustedRandIndex.py +5 -1
  120. validmind/tests/model_validation/sklearn/CalibrationCurve.py +5 -1
  121. validmind/tests/model_validation/sklearn/ClassifierPerformance.py +5 -1
  122. validmind/tests/model_validation/sklearn/ClusterCosineSimilarity.py +5 -1
  123. validmind/tests/model_validation/sklearn/ClusterPerformanceMetrics.py +5 -1
  124. validmind/tests/model_validation/sklearn/CompletenessScore.py +5 -1
  125. validmind/tests/model_validation/sklearn/ConfusionMatrix.py +4 -1
  126. validmind/tests/model_validation/sklearn/FeatureImportance.py +5 -1
  127. validmind/tests/model_validation/sklearn/FowlkesMallowsScore.py +5 -1
  128. validmind/tests/model_validation/sklearn/HomogeneityScore.py +5 -1
  129. validmind/tests/model_validation/sklearn/HyperParametersTuning.py +2 -4
  130. validmind/tests/model_validation/sklearn/KMeansClustersOptimization.py +3 -3
  131. validmind/tests/model_validation/sklearn/MinimumAccuracy.py +5 -1
  132. validmind/tests/model_validation/sklearn/MinimumF1Score.py +5 -1
  133. validmind/tests/model_validation/sklearn/MinimumROCAUCScore.py +5 -1
  134. validmind/tests/model_validation/sklearn/ModelParameters.py +6 -1
  135. validmind/tests/model_validation/sklearn/ModelsPerformanceComparison.py +5 -1
  136. validmind/tests/model_validation/sklearn/OverfitDiagnosis.py +3 -2
  137. validmind/tests/model_validation/sklearn/PermutationFeatureImportance.py +4 -4
  138. validmind/tests/model_validation/sklearn/PopulationStabilityIndex.py +2 -2
  139. validmind/tests/model_validation/sklearn/PrecisionRecallCurve.py +5 -1
  140. validmind/tests/model_validation/sklearn/ROCCurve.py +3 -1
  141. validmind/tests/model_validation/sklearn/RegressionErrors.py +6 -1
  142. validmind/tests/model_validation/sklearn/RegressionErrorsComparison.py +6 -1
  143. validmind/tests/model_validation/sklearn/RegressionPerformance.py +5 -1
  144. validmind/tests/model_validation/sklearn/RegressionR2Square.py +6 -1
  145. validmind/tests/model_validation/sklearn/RegressionR2SquareComparison.py +6 -1
  146. validmind/tests/model_validation/sklearn/RobustnessDiagnosis.py +2 -2
  147. validmind/tests/model_validation/sklearn/ScoreProbabilityAlignment.py +3 -1
  148. validmind/tests/model_validation/sklearn/SilhouettePlot.py +6 -1
  149. validmind/tests/model_validation/sklearn/TrainingTestDegradation.py +2 -2
  150. validmind/tests/model_validation/sklearn/VMeasure.py +5 -1
  151. validmind/tests/model_validation/sklearn/WeakspotsDiagnosis.py +6 -5
  152. validmind/tests/model_validation/statsmodels/AutoARIMA.py +3 -1
  153. validmind/tests/model_validation/statsmodels/CumulativePredictionProbabilities.py +6 -1
  154. validmind/tests/model_validation/statsmodels/DurbinWatsonTest.py +6 -1
  155. validmind/tests/model_validation/statsmodels/GINITable.py +4 -1
  156. validmind/tests/model_validation/statsmodels/KolmogorovSmirnov.py +5 -1
  157. validmind/tests/model_validation/statsmodels/Lilliefors.py +3 -1
  158. validmind/tests/model_validation/statsmodels/PredictionProbabilitiesHistogram.py +6 -2
  159. validmind/tests/model_validation/statsmodels/RegressionCoeffs.py +4 -1
  160. validmind/tests/model_validation/statsmodels/RegressionFeatureSignificance.py +7 -2
  161. validmind/tests/model_validation/statsmodels/RegressionModelForecastPlot.py +5 -4
  162. validmind/tests/model_validation/statsmodels/RegressionModelForecastPlotLevels.py +4 -1
  163. validmind/tests/model_validation/statsmodels/RegressionModelSensitivityPlot.py +3 -2
  164. validmind/tests/model_validation/statsmodels/RegressionModelSummary.py +5 -1
  165. validmind/tests/model_validation/statsmodels/RegressionPermutationFeatureImportance.py +3 -1
  166. validmind/tests/model_validation/statsmodels/ScorecardHistogram.py +6 -1
  167. validmind/tests/ongoing_monitoring/CalibrationCurveDrift.py +2 -2
  168. validmind/tests/ongoing_monitoring/ClassDiscriminationDrift.py +2 -2
  169. validmind/tests/ongoing_monitoring/ClassImbalanceDrift.py +2 -2
  170. validmind/tests/ongoing_monitoring/ClassificationAccuracyDrift.py +2 -2
  171. validmind/tests/ongoing_monitoring/ConfusionMatrixDrift.py +2 -2
  172. validmind/tests/ongoing_monitoring/CumulativePredictionProbabilitiesDrift.py +2 -2
  173. validmind/tests/ongoing_monitoring/FeatureDrift.py +5 -2
  174. validmind/tests/ongoing_monitoring/PredictionAcrossEachFeature.py +6 -1
  175. validmind/tests/ongoing_monitoring/PredictionCorrelation.py +8 -1
  176. validmind/tests/ongoing_monitoring/PredictionProbabilitiesHistogramDrift.py +2 -2
  177. validmind/tests/ongoing_monitoring/PredictionQuantilesAcrossFeatures.py +6 -1
  178. validmind/tests/ongoing_monitoring/ROCCurveDrift.py +4 -2
  179. validmind/tests/ongoing_monitoring/ScoreBandsDrift.py +2 -2
  180. validmind/tests/ongoing_monitoring/ScorecardHistogramDrift.py +2 -2
  181. validmind/tests/ongoing_monitoring/TargetPredictionDistributionPlot.py +8 -1
  182. validmind/tests/output.py +9 -2
  183. validmind/tests/plots/BoxPlot.py +260 -0
  184. validmind/tests/plots/CorrelationHeatmap.py +235 -0
  185. validmind/tests/plots/HistogramPlot.py +233 -0
  186. validmind/tests/plots/ViolinPlot.py +125 -0
  187. validmind/tests/plots/__init__.py +0 -0
  188. validmind/tests/prompt_validation/Bias.py +5 -1
  189. validmind/tests/prompt_validation/Clarity.py +5 -1
  190. validmind/tests/prompt_validation/Conciseness.py +5 -1
  191. validmind/tests/prompt_validation/Delimitation.py +5 -1
  192. validmind/tests/prompt_validation/NegativeInstruction.py +5 -1
  193. validmind/tests/prompt_validation/Robustness.py +5 -1
  194. validmind/tests/prompt_validation/Specificity.py +5 -1
  195. validmind/tests/stats/CorrelationAnalysis.py +251 -0
  196. validmind/tests/stats/DescriptiveStats.py +197 -0
  197. validmind/tests/stats/NormalityTests.py +147 -0
  198. validmind/tests/stats/OutlierDetection.py +173 -0
  199. validmind/tests/stats/__init__.py +0 -0
  200. validmind/unit_metrics/classification/Accuracy.py +2 -1
  201. validmind/unit_metrics/classification/F1.py +2 -1
  202. validmind/unit_metrics/classification/Precision.py +2 -1
  203. validmind/unit_metrics/classification/ROC_AUC.py +2 -1
  204. validmind/unit_metrics/classification/Recall.py +2 -1
  205. validmind/unit_metrics/classification/individual/AbsoluteError.py +42 -0
  206. validmind/unit_metrics/classification/individual/BrierScore.py +56 -0
  207. validmind/unit_metrics/classification/individual/CalibrationError.py +77 -0
  208. validmind/unit_metrics/classification/individual/ClassBalance.py +65 -0
  209. validmind/unit_metrics/classification/individual/Confidence.py +52 -0
  210. validmind/unit_metrics/classification/individual/Correctness.py +41 -0
  211. validmind/unit_metrics/classification/individual/LogLoss.py +61 -0
  212. validmind/unit_metrics/classification/individual/OutlierScore.py +86 -0
  213. validmind/unit_metrics/classification/individual/ProbabilityError.py +54 -0
  214. validmind/unit_metrics/classification/individual/Uncertainty.py +60 -0
  215. validmind/unit_metrics/classification/individual/__init__.py +0 -0
  216. validmind/unit_metrics/regression/AdjustedRSquaredScore.py +2 -1
  217. validmind/unit_metrics/regression/GiniCoefficient.py +2 -1
  218. validmind/unit_metrics/regression/HuberLoss.py +2 -1
  219. validmind/unit_metrics/regression/KolmogorovSmirnovStatistic.py +2 -1
  220. validmind/unit_metrics/regression/MeanAbsoluteError.py +2 -1
  221. validmind/unit_metrics/regression/MeanAbsolutePercentageError.py +2 -1
  222. validmind/unit_metrics/regression/MeanBiasDeviation.py +2 -1
  223. validmind/unit_metrics/regression/MeanSquaredError.py +2 -1
  224. validmind/unit_metrics/regression/QuantileLoss.py +1 -1
  225. validmind/unit_metrics/regression/RSquaredScore.py +2 -1
  226. validmind/unit_metrics/regression/RootMeanSquaredError.py +2 -1
  227. validmind/vm_models/dataset/dataset.py +291 -38
  228. validmind/vm_models/result/result.py +26 -4
  229. {validmind-2.8.28.dist-info → validmind-2.9.1.dist-info}/METADATA +2 -2
  230. {validmind-2.8.28.dist-info → validmind-2.9.1.dist-info}/RECORD +233 -212
  231. {validmind-2.8.28.dist-info → validmind-2.9.1.dist-info}/LICENSE +0 -0
  232. {validmind-2.8.28.dist-info → validmind-2.9.1.dist-info}/WHEEL +0 -0
  233. {validmind-2.8.28.dist-info → validmind-2.9.1.dist-info}/entry_points.txt +0 -0
@@ -2,6 +2,8 @@
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 typing import Tuple
6
+
5
7
  import numpy as np
6
8
  import plotly.graph_objects as go
7
9
  from sklearn.metrics import precision_recall_curve
@@ -14,7 +16,9 @@ from validmind.vm_models import VMDataset, VMModel
14
16
 
15
17
  @tags("sklearn", "binary_classification", "model_performance", "visualization")
16
18
  @tasks("classification", "text_classification")
17
- def PrecisionRecallCurve(model: VMModel, dataset: VMDataset):
19
+ def PrecisionRecallCurve(
20
+ model: VMModel, dataset: VMDataset
21
+ ) -> Tuple[go.Figure, RawData]:
18
22
  """
19
23
  Evaluates the precision-recall trade-off for binary classification models and visualizes the Precision-Recall curve.
20
24
 
@@ -2,6 +2,8 @@
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 typing import Tuple
6
+
5
7
  import numpy as np
6
8
  import plotly.graph_objects as go
7
9
  from sklearn.metrics import roc_auc_score, roc_curve
@@ -19,7 +21,7 @@ from validmind.vm_models import VMDataset, VMModel
19
21
  "visualization",
20
22
  )
21
23
  @tasks("classification", "text_classification")
22
- def ROCCurve(model: VMModel, dataset: VMDataset):
24
+ def ROCCurve(model: VMModel, dataset: VMDataset) -> Tuple[go.Figure, RawData]:
23
25
  """
24
26
  Evaluates binary classification model performance by generating and plotting the Receiver Operating Characteristic
25
27
  (ROC) curve and calculating the Area Under Curve (AUC) score.
@@ -2,16 +2,21 @@
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 typing import Tuple
6
+
5
7
  import numpy as np
6
8
  import pandas as pd
7
9
  from sklearn import metrics
8
10
 
9
11
  from validmind import RawData, tags, tasks
12
+ from validmind.vm_models import VMDataset, VMModel
10
13
 
11
14
 
12
15
  @tags("sklearn", "model_performance")
13
16
  @tasks("regression", "classification")
14
- def RegressionErrors(model, dataset):
17
+ def RegressionErrors(
18
+ model: VMModel, dataset: VMDataset
19
+ ) -> Tuple[pd.DataFrame, RawData]:
15
20
  """
16
21
  Assesses the performance and error distribution of a regression model using various error metrics.
17
22
 
@@ -2,19 +2,24 @@
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 typing import List
6
+
5
7
  import numpy as np
6
8
  import pandas as pd
7
9
  from sklearn import metrics
8
10
 
9
11
  from validmind import tags, tasks
10
12
  from validmind.logging import get_logger
13
+ from validmind.vm_models import VMDataset, VMModel
11
14
 
12
15
  logger = get_logger(__name__)
13
16
 
14
17
 
15
18
  @tags("model_performance", "sklearn")
16
19
  @tasks("regression", "time_series_forecasting")
17
- def RegressionErrorsComparison(datasets, models):
20
+ def RegressionErrorsComparison(
21
+ datasets: List[VMDataset], models: List[VMModel]
22
+ ) -> pd.DataFrame:
18
23
  """
19
24
  Assesses multiple regression error metrics to compare model performance across different datasets, emphasizing
20
25
  systematic overestimation or underestimation and large percentage errors.
@@ -2,6 +2,8 @@
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 typing import Dict, List, Tuple
6
+
5
7
  import numpy as np
6
8
  from sklearn.metrics import mean_absolute_error, mean_squared_error
7
9
 
@@ -14,7 +16,9 @@ logger = get_logger(__name__)
14
16
 
15
17
  @tags("sklearn", "model_performance")
16
18
  @tasks("regression")
17
- def RegressionPerformance(model: VMModel, dataset: VMDataset):
19
+ def RegressionPerformance(
20
+ model: VMModel, dataset: VMDataset
21
+ ) -> Tuple[List[Dict[str, float]], RawData]:
18
22
  """
19
23
  Evaluates the performance of a regression model using five different metrics: MAE, MSE, RMSE, MAPE, and MBD.
20
24
 
@@ -2,16 +2,21 @@
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 typing import Tuple
6
+
5
7
  import pandas as pd
6
8
  from sklearn import metrics
7
9
 
8
10
  from validmind import RawData, tags, tasks
9
11
  from validmind.tests.model_validation.statsmodels.statsutils import adj_r2_score
12
+ from validmind.vm_models import VMDataset, VMModel
10
13
 
11
14
 
12
15
  @tags("sklearn", "model_performance")
13
16
  @tasks("regression")
14
- def RegressionR2Square(dataset, model):
17
+ def RegressionR2Square(
18
+ dataset: VMDataset, model: VMModel
19
+ ) -> Tuple[pd.DataFrame, RawData]:
15
20
  """
16
21
  Assesses the overall goodness-of-fit of a regression model by evaluating R-squared (R2) and Adjusted R-squared (Adj
17
22
  R2) scores to determine the model's explanatory power over the dependent variable.
@@ -2,16 +2,21 @@
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 typing import List
6
+
5
7
  import pandas as pd
6
8
  from sklearn import metrics
7
9
 
8
10
  from validmind import tags, tasks
9
11
  from validmind.tests.model_validation.statsmodels.statsutils import adj_r2_score
12
+ from validmind.vm_models import VMDataset, VMModel
10
13
 
11
14
 
12
15
  @tags("model_performance", "sklearn")
13
16
  @tasks("regression", "time_series_forecasting")
14
- def RegressionR2SquareComparison(datasets, models):
17
+ def RegressionR2SquareComparison(
18
+ datasets: List[VMDataset], models: List[VMModel]
19
+ ) -> pd.DataFrame:
15
20
  """
16
21
  Compares R-Squared and Adjusted R-Squared values for different regression models across multiple datasets to assess
17
22
  model performance and relevance of features.
@@ -12,9 +12,9 @@ import plotly.graph_objects as go
12
12
  import seaborn as sns
13
13
  from sklearn import metrics
14
14
 
15
+ from validmind import tags, tasks
15
16
  from validmind.errors import MissingOrInvalidModelPredictFnError
16
17
  from validmind.logging import get_logger
17
- from validmind.tests import tags, tasks
18
18
  from validmind.vm_models import VMDataset, VMModel
19
19
 
20
20
  logger = get_logger(__name__)
@@ -221,7 +221,7 @@ def RobustnessDiagnosis(
221
221
  metric: str = None,
222
222
  scaling_factor_std_dev_list: List[float] = DEFAULT_STD_DEV_LIST,
223
223
  performance_decay_threshold: float = DEFAULT_DECAY_THRESHOLD,
224
- ):
224
+ ) -> Tuple[pd.DataFrame, go.Figure, bool]:
225
225
  """
226
226
  Assesses the robustness of a machine learning model by evaluating performance decay under noisy conditions.
227
227
 
@@ -2,6 +2,8 @@
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 typing import Tuple
6
+
5
7
  import pandas as pd
6
8
  import plotly.graph_objects as go
7
9
 
@@ -13,7 +15,7 @@ from validmind.vm_models import VMDataset, VMModel
13
15
  @tasks("classification")
14
16
  def ScoreProbabilityAlignment(
15
17
  model: VMModel, dataset: VMDataset, score_column: str = "score", n_bins: int = 10
16
- ):
18
+ ) -> Tuple[pd.DataFrame, go.Figure, RawData]:
17
19
  """
18
20
  Analyzes the alignment between credit scores and predicted probabilities.
19
21
 
@@ -2,8 +2,11 @@
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 typing import Dict, Tuple
6
+
5
7
  import matplotlib.pyplot as plt
6
8
  import numpy as np
9
+ import plotly.graph_objects as go
7
10
  from sklearn.metrics import silhouette_samples, silhouette_score
8
11
 
9
12
  from validmind import RawData, tags, tasks
@@ -12,7 +15,9 @@ from validmind.vm_models import VMDataset, VMModel
12
15
 
13
16
  @tags("sklearn", "model_performance")
14
17
  @tasks("clustering")
15
- def SilhouettePlot(model: VMModel, dataset: VMDataset):
18
+ def SilhouettePlot(
19
+ model: VMModel, dataset: VMDataset
20
+ ) -> Tuple[Dict[str, float], go.Figure, RawData]:
16
21
  """
17
22
  Calculates and visualizes Silhouette Score, assessing the degree of data point suitability to its cluster in ML
18
23
  models.
@@ -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 typing import List
5
+ from typing import Dict, List, Tuple
6
6
 
7
7
  from numpy import unique
8
8
  from sklearn.metrics import classification_report
@@ -22,7 +22,7 @@ from validmind.vm_models import VMDataset, VMModel
22
22
  @tasks("classification", "text_classification")
23
23
  def TrainingTestDegradation(
24
24
  datasets: List[VMDataset], model: VMModel, max_threshold: float = 0.10
25
- ):
25
+ ) -> Tuple[List[Dict[str, float]], bool, RawData]:
26
26
  """
27
27
  Tests if model performance degradation between training and test datasets exceeds a predefined threshold.
28
28
 
@@ -2,6 +2,8 @@
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 typing import Dict, List, Tuple
6
+
5
7
  from sklearn import metrics
6
8
 
7
9
  from validmind import RawData, tags, tasks
@@ -10,7 +12,9 @@ from validmind.vm_models import VMDataset, VMModel
10
12
 
11
13
  @tags("sklearn", "model_performance")
12
14
  @tasks("clustering")
13
- def VMeasure(dataset: VMDataset, model: VMModel):
15
+ def VMeasure(
16
+ dataset: VMDataset, model: VMModel
17
+ ) -> Tuple[List[Dict[str, float]], RawData]:
14
18
  """
15
19
  Evaluates homogeneity and completeness of a clustering model using the V Measure Score.
16
20
 
@@ -2,10 +2,11 @@
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 typing import Callable, Dict, List, Tuple, Union
5
+ from typing import Callable, Dict, List, Optional, Tuple
6
6
 
7
7
  import matplotlib.pyplot as plt
8
8
  import pandas as pd
9
+ import plotly.graph_objects as go
9
10
  import seaborn as sns
10
11
  from sklearn import metrics
11
12
 
@@ -157,10 +158,10 @@ def _plot_weak_spots(
157
158
  def WeakspotsDiagnosis(
158
159
  datasets: List[VMDataset],
159
160
  model: VMModel,
160
- features_columns: Union[List[str], None] = None,
161
- metrics: Union[Dict[str, Callable], None] = None,
162
- thresholds: Union[Dict[str, float], None] = None,
163
- ):
161
+ features_columns: Optional[List[str]] = None,
162
+ metrics: Optional[Dict[str, Callable]] = None,
163
+ thresholds: Optional[Dict[str, float]] = None,
164
+ ) -> Tuple[pd.DataFrame, go.Figure, bool]:
164
165
  """
165
166
  Identifies and visualizes weak spots in a machine learning model's performance across various sections of the
166
167
  feature space.
@@ -2,6 +2,8 @@
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 typing import Dict, List
6
+
5
7
  from statsmodels.tsa.arima.model import ARIMA
6
8
  from statsmodels.tsa.stattools import adfuller
7
9
 
@@ -14,7 +16,7 @@ logger = get_logger(__name__)
14
16
 
15
17
  @tags("time_series_data", "forecasting", "model_selection", "statsmodels")
16
18
  @tasks("regression")
17
- def AutoARIMA(model: VMModel, dataset: VMDataset):
19
+ def AutoARIMA(model: VMModel, dataset: VMDataset) -> List[Dict[str, float]]:
18
20
  """
19
21
  Evaluates ARIMA models for time-series forecasting, ranking them using Bayesian and Akaike Information Criteria.
20
22
 
@@ -2,16 +2,21 @@
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 typing import Tuple
6
+
5
7
  import numpy as np
6
8
  import plotly.graph_objects as go
7
9
  from matplotlib import cm
8
10
 
9
11
  from validmind import RawData, tags, tasks
12
+ from validmind.vm_models import VMDataset, VMModel
10
13
 
11
14
 
12
15
  @tags("visualization", "credit_risk")
13
16
  @tasks("classification")
14
- def CumulativePredictionProbabilities(dataset, model, title="Cumulative Probabilities"):
17
+ def CumulativePredictionProbabilities(
18
+ dataset: VMDataset, model: VMModel, title: str = "Cumulative Probabilities"
19
+ ) -> Tuple[go.Figure, RawData]:
15
20
  """
16
21
  Visualizes cumulative probabilities of positive and negative classes for both training and testing in classification models.
17
22
 
@@ -2,15 +2,20 @@
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 typing import List, Tuple
6
+
5
7
  import pandas as pd
6
8
  from statsmodels.stats.stattools import durbin_watson
7
9
 
8
10
  from validmind import RawData, tags, tasks
11
+ from validmind.vm_models import VMDataset, VMModel
9
12
 
10
13
 
11
14
  @tasks("regression")
12
15
  @tags("time_series_data", "forecasting", "statistical_test", "statsmodels")
13
- def DurbinWatsonTest(dataset, model, threshold=[1.5, 2.5]):
16
+ def DurbinWatsonTest(
17
+ dataset: VMDataset, model: VMModel, threshold: List[float] = [1.5, 2.5]
18
+ ) -> Tuple[pd.DataFrame, RawData]:
14
19
  """
15
20
  Assesses autocorrelation in time series data features using the Durbin-Watson statistic.
16
21
 
@@ -2,16 +2,19 @@
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 typing import Tuple
6
+
5
7
  import numpy as np
6
8
  import pandas as pd
7
9
  from sklearn.metrics import roc_auc_score, roc_curve
8
10
 
9
11
  from validmind import RawData, tags, tasks
12
+ from validmind.vm_models import VMDataset, VMModel
10
13
 
11
14
 
12
15
  @tags("model_performance")
13
16
  @tasks("classification")
14
- def GINITable(dataset, model):
17
+ def GINITable(dataset: VMDataset, model: VMModel) -> Tuple[pd.DataFrame, RawData]:
15
18
  """
16
19
  Evaluates classification model performance using AUC, GINI, and KS metrics for training and test datasets.
17
20
 
@@ -2,6 +2,8 @@
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 typing import Dict, List, Tuple
6
+
5
7
  from statsmodels.stats.diagnostic import kstest_normal
6
8
 
7
9
  from validmind import RawData, tags, tasks
@@ -11,7 +13,9 @@ from validmind.vm_models import VMDataset, VMModel
11
13
 
12
14
  @tags("tabular_data", "data_distribution", "statistical_test", "statsmodels")
13
15
  @tasks("classification", "regression")
14
- def KolmogorovSmirnov(model: VMModel, dataset: VMDataset, dist: str = "norm"):
16
+ def KolmogorovSmirnov(
17
+ model: VMModel, dataset: VMDataset, dist: str = "norm"
18
+ ) -> Tuple[List[Dict[str, float]], RawData]:
15
19
  """
16
20
  Assesses whether each feature in the dataset aligns with a normal distribution using the Kolmogorov-Smirnov test.
17
21
 
@@ -2,6 +2,8 @@
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 typing import Dict, List
6
+
5
7
  from statsmodels.stats.diagnostic import lilliefors
6
8
 
7
9
  from validmind import tags, tasks
@@ -10,7 +12,7 @@ from validmind.vm_models import VMDataset
10
12
 
11
13
  @tags("tabular_data", "data_distribution", "statistical_test", "statsmodels")
12
14
  @tasks("classification", "regression")
13
- def Lilliefors(dataset: VMDataset):
15
+ def Lilliefors(dataset: VMDataset) -> List[Dict[str, float]]:
14
16
  """
15
17
  Assesses the normality of feature distributions in an ML model's training dataset using the Lilliefors test.
16
18
 
@@ -2,18 +2,22 @@
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 typing import Tuple
5
6
 
6
7
  import plotly.graph_objects as go
7
8
  from matplotlib import cm
8
9
 
9
10
  from validmind import RawData, tags, tasks
11
+ from validmind.vm_models import VMDataset, VMModel
10
12
 
11
13
 
12
14
  @tags("visualization", "credit_risk")
13
15
  @tasks("classification")
14
16
  def PredictionProbabilitiesHistogram(
15
- dataset, model, title="Histogram of Predictive Probabilities"
16
- ):
17
+ dataset: VMDataset,
18
+ model: VMModel,
19
+ title: str = "Histogram of Predictive Probabilities",
20
+ ) -> Tuple[go.Figure, RawData]:
17
21
  """
18
22
  Assesses the predictive probability distribution for binary classification to evaluate model performance and
19
23
  potential overfitting or bias.
@@ -3,17 +3,20 @@
3
3
  # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
4
 
5
5
 
6
+ from typing import Tuple
7
+
6
8
  import pandas as pd
7
9
  import plotly.graph_objects as go
8
10
  from scipy import stats
9
11
 
10
12
  from validmind import RawData, tags, tasks
11
13
  from validmind.errors import SkipTestError
14
+ from validmind.vm_models import VMModel
12
15
 
13
16
 
14
17
  @tags("tabular_data", "visualization", "model_training")
15
18
  @tasks("regression")
16
- def RegressionCoeffs(model):
19
+ def RegressionCoeffs(model: VMModel) -> Tuple[go.Figure, RawData, pd.DataFrame]:
17
20
  """
18
21
  Assesses the significance and uncertainty of predictor variables in a regression model through visualization of
19
22
  coefficients and their 95% confidence intervals.
@@ -2,7 +2,10 @@
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 typing import Tuple
6
+
5
7
  import matplotlib.pyplot as plt
8
+ import plotly.graph_objects as go
6
9
  import seaborn as sns
7
10
 
8
11
  from validmind import RawData, tags, tasks
@@ -16,8 +19,10 @@ logger = get_logger(__name__)
16
19
  @tags("statistical_test", "model_interpretation", "visualization", "feature_importance")
17
20
  @tasks("regression")
18
21
  def RegressionFeatureSignificance(
19
- model: VMModel, fontsize: int = 10, p_threshold: float = 0.05
20
- ):
22
+ model: VMModel,
23
+ fontsize: int = 10,
24
+ p_threshold: float = 0.05,
25
+ ) -> Tuple[go.Figure, RawData]:
21
26
  """
22
27
  Assesses and visualizes the statistical significance of features in a regression model.
23
28
 
@@ -2,10 +2,11 @@
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 typing import Union
5
+ from typing import Optional, Tuple
6
6
 
7
7
  import matplotlib.pyplot as plt
8
8
  import pandas as pd
9
+ import plotly.graph_objects as go
9
10
 
10
11
  from validmind import RawData, tags, tasks
11
12
  from validmind.logging import get_logger
@@ -19,9 +20,9 @@ logger = get_logger(__name__)
19
20
  def RegressionModelForecastPlot(
20
21
  model: VMModel,
21
22
  dataset: VMDataset,
22
- start_date: Union[str, None] = None,
23
- end_date: Union[str, None] = None,
24
- ):
23
+ start_date: Optional[str] = None,
24
+ end_date: Optional[str] = None,
25
+ ) -> Tuple[go.Figure, RawData]:
25
26
  """
26
27
  Generates plots to visually compare the forecasted outcomes of a regression model against actual observed values over
27
28
  a specified date range.
@@ -2,9 +2,12 @@
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 typing import Tuple
6
+
5
7
  import matplotlib.pyplot as plt
6
8
  import numpy as np
7
9
  import pandas as pd
10
+ import plotly.graph_objects as go
8
11
 
9
12
  from validmind import RawData, tags, tasks
10
13
  from validmind.vm_models import VMDataset, VMModel
@@ -23,7 +26,7 @@ def integrate_diff(series_diff, start_value):
23
26
  def RegressionModelForecastPlotLevels(
24
27
  model: VMModel,
25
28
  dataset: VMDataset,
26
- ):
29
+ ) -> Tuple[go.Figure, RawData]:
27
30
  """
28
31
  Assesses the alignment between forecasted and observed values in regression models through visual plots
29
32
 
@@ -2,10 +2,11 @@
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 typing import List, Union
5
+ from typing import List, Tuple, Union
6
6
 
7
7
  import matplotlib.pyplot as plt
8
8
  import numpy as np
9
+ import plotly.graph_objects as go
9
10
 
10
11
  from validmind import RawData, tags, tasks
11
12
  from validmind.logging import get_logger
@@ -29,7 +30,7 @@ def RegressionModelSensitivityPlot(
29
30
  model: VMModel,
30
31
  shocks: List[float] = [0.1],
31
32
  transformation: Union[str, None] = None,
32
- ):
33
+ ) -> Tuple[go.Figure, RawData]:
33
34
  """
34
35
  Assesses the sensitivity of a regression model to changes in independent variables by applying shocks and
35
36
  visualizing the impact.
@@ -2,6 +2,8 @@
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 typing import Dict, List, Tuple
6
+
5
7
  from sklearn.metrics import mean_squared_error, r2_score
6
8
 
7
9
  from validmind import RawData, tags, tasks
@@ -12,7 +14,9 @@ from .statsutils import adj_r2_score
12
14
 
13
15
  @tags("model_performance", "regression")
14
16
  @tasks("regression")
15
- def RegressionModelSummary(dataset: VMDataset, model: VMModel):
17
+ def RegressionModelSummary(
18
+ dataset: VMDataset, model: VMModel
19
+ ) -> Tuple[List[Dict[str, float]], RawData]:
16
20
  """
17
21
  Evaluates regression model performance using metrics including R-Squared, Adjusted R-Squared, MSE, and RMSE.
18
22
 
@@ -2,6 +2,8 @@
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 typing import Tuple
6
+
5
7
  import numpy as np
6
8
  import pandas as pd
7
9
  import plotly.graph_objects as go
@@ -19,7 +21,7 @@ logger = get_logger(__name__)
19
21
  @tasks("regression")
20
22
  def RegressionPermutationFeatureImportance(
21
23
  dataset: VMDataset, model: VMModel, fontsize: int = 12, figure_height: int = 500
22
- ):
24
+ ) -> Tuple[go.Figure, RawData]:
23
25
  """
24
26
  Assesses the significance of each feature in a model by evaluating the impact on model performance when feature
25
27
  values are randomly rearranged.
@@ -6,11 +6,16 @@ import plotly.graph_objects as go
6
6
  from matplotlib import cm
7
7
 
8
8
  from validmind import tags, tasks
9
+ from validmind.vm_models import VMDataset
9
10
 
10
11
 
11
12
  @tags("visualization", "credit_risk", "logistic_regression")
12
13
  @tasks("classification")
13
- def ScorecardHistogram(dataset, title="Histogram of Scores", score_column="score"):
14
+ def ScorecardHistogram(
15
+ dataset: VMDataset,
16
+ title: str = "Histogram of Scores",
17
+ score_column: str = "score",
18
+ ) -> go.Figure:
14
19
  """
15
20
  The Scorecard Histogram test evaluates the distribution of credit scores between default and non-default instances,
16
21
  providing critical insights into the performance and generalizability of credit-risk models.
@@ -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 typing import List
5
+ from typing import Dict, List, Tuple
6
6
 
7
7
  import numpy as np
8
8
  import pandas as pd
@@ -26,7 +26,7 @@ def CalibrationCurveDrift(
26
26
  model: VMModel,
27
27
  n_bins: int = 10,
28
28
  drift_pct_threshold: float = 20,
29
- ):
29
+ ) -> Tuple[go.Figure, Dict[str, pd.DataFrame], bool, RawData]:
30
30
  """
31
31
  Evaluates changes in probability calibration between reference and monitoring datasets.
32
32
 
@@ -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 typing import List
5
+ from typing import Dict, List, Tuple
6
6
 
7
7
  import numpy as np
8
8
  import pandas as pd
@@ -38,7 +38,7 @@ def calculate_ks_statistic(y_true, y_prob):
38
38
  @tasks("classification", "text_classification")
39
39
  def ClassDiscriminationDrift(
40
40
  datasets: List[VMDataset], model: VMModel, drift_pct_threshold=20
41
- ):
41
+ ) -> Tuple[Dict[str, pd.DataFrame], bool]:
42
42
  """
43
43
  Compares classification discrimination metrics between reference and monitoring datasets.
44
44