validmind 2.4.10__tar.gz → 2.4.13__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {validmind-2.4.10 → validmind-2.4.13}/PKG-INFO +1 -1
- {validmind-2.4.10 → validmind-2.4.13}/pyproject.toml +1 -1
- validmind-2.4.13/validmind/__version__.py +1 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/api_client.py +1 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/client.py +0 -2
- {validmind-2.4.10 → validmind-2.4.13}/validmind/input_registry.py +8 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/DatasetDescription.py +1 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/run.py +35 -19
- {validmind-2.4.10 → validmind-2.4.13}/validmind/unit_metrics/__init__.py +1 -1
- {validmind-2.4.10 → validmind-2.4.13}/validmind/vm_models/__init__.py +2 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/vm_models/dataset/dataset.py +53 -13
- validmind-2.4.13/validmind/vm_models/input.py +31 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/vm_models/model.py +4 -2
- {validmind-2.4.10 → validmind-2.4.13}/validmind/vm_models/test_context.py +9 -2
- validmind-2.4.10/validmind/__version__.py +0 -1
- {validmind-2.4.10 → validmind-2.4.13}/LICENSE +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/README.pypi.md +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/__init__.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/ai/test_descriptions.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/ai/utils.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/client_config.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/__init__.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/classification/__init__.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/classification/customer_churn.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/classification/datasets/bank_customer_churn.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/classification/datasets/taiwan_credit.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/classification/taiwan_credit.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/cluster/digits.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/credit_risk/__init__.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/credit_risk/datasets/lending_club_loan_data_2007_2014_clean.csv.gz +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/credit_risk/lending_club.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/llm/rag/__init__.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_1.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_2.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_3.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_4.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_5.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/llm/rag/rfp.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/nlp/__init__.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/nlp/cnn_dailymail.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/nlp/datasets/Covid_19.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/nlp/datasets/cnn_dailymail_100_with_predictions.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/nlp/datasets/cnn_dailymail_500_with_predictions.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/nlp/datasets/sentiments_with_predictions.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/nlp/twitter_covid_19.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/__init__.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/california_housing.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred/CPIAUCSL.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred/CSUSHPISA.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred/DRSFRMACBS.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred/FEDFUNDS.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred/GDP.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred/GDPC1.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred/GS10.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred/GS3.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred/GS5.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred/MORTGAGE30US.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred/UNRATE.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred_loan_rates.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred_loan_rates_test_1.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred_loan_rates_test_2.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred_loan_rates_test_3.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred_loan_rates_test_4.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred_loan_rates_test_5.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/leanding_club_loan_rates.csv +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/fred.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/fred_timeseries.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/lending_club.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/models/fred_loan_rates_model_1.pkl +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/models/fred_loan_rates_model_2.pkl +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/models/fred_loan_rates_model_3.pkl +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/models/fred_loan_rates_model_4.pkl +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/models/fred_loan_rates_model_5.pkl +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/errors.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/html_templates/__init__.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/html_templates/content_blocks.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/logging.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/models/__init__.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/models/foundation.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/models/function.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/models/huggingface.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/models/metadata.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/models/pipeline.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/models/pytorch.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/models/r_model.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/models/sklearn.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/template.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/test_suites/__init__.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/test_suites/classifier.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/test_suites/cluster.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/test_suites/embeddings.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/test_suites/llm.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/test_suites/nlp.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/test_suites/parameters_optimization.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/test_suites/regression.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/test_suites/statsmodels_timeseries.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/test_suites/summarization.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/test_suites/tabular_datasets.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/test_suites/text_data.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/test_suites/time_series.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/__init__.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/__types__.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/_store.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/ACFandPACFPlot.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/ADF.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/ANOVAOneWayTable.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/AutoAR.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/AutoMA.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/AutoSeasonality.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/AutoStationarity.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/BivariateFeaturesBarPlots.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/BivariateHistograms.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/BivariateScatterPlots.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/ChiSquaredFeaturesTable.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/ClassImbalance.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/DFGLSArch.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/DatasetSplit.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/DescriptiveStatistics.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/Duplicates.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/EngleGrangerCoint.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/FeatureTargetCorrelationPlot.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/HeatmapFeatureCorrelations.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/HighCardinality.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/HighPearsonCorrelation.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/IQROutliersBarPlot.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/IQROutliersTable.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/IsolationForestOutliers.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/KPSS.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/LaggedCorrelationHeatmap.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/MissingValues.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/MissingValuesBarPlot.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/MissingValuesRisk.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/PearsonCorrelationMatrix.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/PhillipsPerronArch.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/RollingStatsPlot.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/ScatterPlot.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/SeasonalDecompose.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/Skewness.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/SpreadPlot.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/TabularCategoricalBarPlots.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/TabularDateTimeHistograms.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/TabularDescriptionTables.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/TabularNumericalHistograms.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/TargetRateBarPlots.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/TimeSeriesDescription.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/TimeSeriesDescriptiveStatistics.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/TimeSeriesFrequency.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/TimeSeriesHistogram.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/TimeSeriesLinePlot.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/TimeSeriesMissingValues.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/TimeSeriesOutliers.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/TooManyZeroValues.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/UniqueRows.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/WOEBinPlots.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/WOEBinTable.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/ZivotAndrewsArch.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/__init__.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/nlp/CommonWords.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/nlp/Hashtags.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/nlp/LanguageDetection.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/nlp/Mentions.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/nlp/PolarityAndSubjectivity.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/nlp/Punctuations.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/nlp/Sentiment.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/nlp/StopWords.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/nlp/TextDescription.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/nlp/Toxicity.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/data_validation/nlp/__init__.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/decorator.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/load.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/metadata.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/BertScore.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/BleuScore.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/ClusterSizeDistribution.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/ContextualRecall.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/FeaturesAUC.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/MeteorScore.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/ModelMetadata.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/ModelMetadataComparison.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/ModelPredictionResiduals.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/RegardScore.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/RegressionResidualsPlot.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/RougeScore.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/TimeSeriesPredictionWithCI.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/TimeSeriesPredictionsPlot.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/TimeSeriesR2SquareBySegments.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/TokenDisparity.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/ToxicityScore.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/__init__.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/embeddings/ClusterDistribution.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/embeddings/CosineSimilarityComparison.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/embeddings/CosineSimilarityDistribution.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/embeddings/CosineSimilarityHeatmap.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/embeddings/DescriptiveAnalytics.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/embeddings/EmbeddingsVisualization2D.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/embeddings/EuclideanDistanceComparison.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/embeddings/EuclideanDistanceHeatmap.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/embeddings/PCAComponentsPairwisePlots.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/embeddings/StabilityAnalysis.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/embeddings/StabilityAnalysisKeyword.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/embeddings/StabilityAnalysisRandomNoise.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/embeddings/StabilityAnalysisSynonyms.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/embeddings/StabilityAnalysisTranslation.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/embeddings/TSNEComponentsPairwisePlots.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/ragas/AnswerCorrectness.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/ragas/AnswerRelevance.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/ragas/AnswerSimilarity.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/ragas/AspectCritique.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/ragas/ContextEntityRecall.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/ragas/ContextPrecision.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/ragas/ContextRecall.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/ragas/ContextRelevancy.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/ragas/Faithfulness.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/ragas/utils.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/AdjustedMutualInformation.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/AdjustedRandIndex.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/ClassifierPerformance.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/ClusterCosineSimilarity.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/ClusterPerformance.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/ClusterPerformanceMetrics.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/CompletenessScore.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/ConfusionMatrix.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/FeatureImportanceComparison.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/FowlkesMallowsScore.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/HomogeneityScore.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/HyperParametersTuning.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/KMeansClustersOptimization.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/MinimumAccuracy.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/MinimumF1Score.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/MinimumROCAUCScore.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/ModelsPerformanceComparison.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/OverfitDiagnosis.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/PermutationFeatureImportance.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/PopulationStabilityIndex.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/PrecisionRecallCurve.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/ROCCurve.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/RegressionErrors.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/RegressionErrorsComparison.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/RegressionModelsPerformanceComparison.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/RegressionR2Square.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/RegressionR2SquareComparison.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/RobustnessDiagnosis.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/SHAPGlobalImportance.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/SilhouettePlot.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/TrainingTestDegradation.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/VMeasure.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/WeakspotsDiagnosis.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/sklearn/__init__.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/AutoARIMA.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/BoxPierce.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/CumulativePredictionProbabilities.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/DurbinWatsonTest.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/GINITable.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/JarqueBera.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/KolmogorovSmirnov.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/LJungBox.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/Lilliefors.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/PredictionProbabilitiesHistogram.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/RegressionCoeffsPlot.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/RegressionFeatureSignificance.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlot.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlotLevels.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/RegressionModelSensitivityPlot.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/RegressionModelSummary.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/RegressionModelsCoeffs.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/RegressionPermutationFeatureImportance.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/RunsTest.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/ScorecardHistogram.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/ShapiroWilk.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/__init__.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/model_validation/statsmodels/statsutils.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/prompt_validation/Bias.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/prompt_validation/Clarity.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/prompt_validation/Conciseness.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/prompt_validation/Delimitation.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/prompt_validation/NegativeInstruction.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/prompt_validation/Robustness.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/prompt_validation/Specificity.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/prompt_validation/__init__.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/prompt_validation/ai_powered_test.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/test_providers.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/tests/utils.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/unit_metrics/classification/sklearn/Accuracy.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/unit_metrics/classification/sklearn/F1.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/unit_metrics/classification/sklearn/Precision.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/unit_metrics/classification/sklearn/ROC_AUC.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/unit_metrics/classification/sklearn/Recall.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/unit_metrics/composite.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/unit_metrics/regression/GiniCoefficient.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/unit_metrics/regression/HuberLoss.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/unit_metrics/regression/KolmogorovSmirnovStatistic.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/unit_metrics/regression/MeanAbsolutePercentageError.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/unit_metrics/regression/MeanBiasDeviation.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/unit_metrics/regression/QuantileLoss.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/unit_metrics/regression/sklearn/AdjustedRSquaredScore.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/unit_metrics/regression/sklearn/MeanAbsoluteError.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/unit_metrics/regression/sklearn/MeanSquaredError.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/unit_metrics/regression/sklearn/RSquaredScore.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/unit_metrics/regression/sklearn/RootMeanSquaredError.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/utils.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/vm_models/dataset/__init__.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/vm_models/dataset/utils.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/vm_models/figure.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/vm_models/test/metric.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/vm_models/test/metric_result.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/vm_models/test/output_template.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/vm_models/test/result_summary.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/vm_models/test/result_wrapper.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/vm_models/test/test.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/vm_models/test/threshold_test.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/vm_models/test/threshold_test_result.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/vm_models/test_suite/runner.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/vm_models/test_suite/summary.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/vm_models/test_suite/test.py +0 -0
- {validmind-2.4.10 → validmind-2.4.13}/validmind/vm_models/test_suite/test_suite.py +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "2.4.13"
|
@@ -48,7 +48,6 @@ def init_dataset(
|
|
48
48
|
index_name: str = None,
|
49
49
|
date_time_index: bool = False,
|
50
50
|
columns: list = None,
|
51
|
-
options: dict = None,
|
52
51
|
text_column: str = None,
|
53
52
|
target_column: str = None,
|
54
53
|
feature_columns: list = None,
|
@@ -72,7 +71,6 @@ def init_dataset(
|
|
72
71
|
Args:
|
73
72
|
dataset : dataset from various python libraries
|
74
73
|
model (VMModel): ValidMind model object
|
75
|
-
options (dict): A dictionary of options for the dataset
|
76
74
|
targets (vm.vm.DatasetTargets): A list of target variables
|
77
75
|
target_column (str): The name of the target column in the dataset
|
78
76
|
feature_columns (list): A list of names of feature columns in the dataset
|
@@ -6,6 +6,8 @@
|
|
6
6
|
Central class to register inputs
|
7
7
|
"""
|
8
8
|
|
9
|
+
from validmind.vm_models.input import VMInput
|
10
|
+
|
9
11
|
from .errors import InvalidInputError
|
10
12
|
|
11
13
|
|
@@ -14,6 +16,12 @@ class InputRegistry:
|
|
14
16
|
self.registry = {}
|
15
17
|
|
16
18
|
def add(self, key, obj):
|
19
|
+
if not isinstance(obj, VMInput):
|
20
|
+
raise InvalidInputError(
|
21
|
+
f"Input object must be an instance of VMInput. "
|
22
|
+
f"Got {type(obj)} instead."
|
23
|
+
)
|
24
|
+
|
17
25
|
self.registry[key] = obj
|
18
26
|
|
19
27
|
def get(self, key):
|
@@ -83,32 +83,47 @@ def _combine_summaries(summaries: List[Dict[str, Any]]):
|
|
83
83
|
)
|
84
84
|
|
85
85
|
|
86
|
-
def
|
87
|
-
|
86
|
+
def _get_input_id(v):
|
87
|
+
if isinstance(v, str):
|
88
|
+
return v # If v is a string, return it as is.
|
89
|
+
elif isinstance(v, list) and all(hasattr(item, "input_id") for item in v):
|
90
|
+
# If v is a list and all items have an input_id attribute, join their input_id values.
|
91
|
+
return ", ".join(item.input_id for item in v)
|
92
|
+
elif hasattr(v, "input_id"):
|
93
|
+
return v.input_id # If v has an input_id attribute, return it.
|
94
|
+
return str(v) # Otherwise, return the string representation of v.
|
95
|
+
|
96
|
+
|
97
|
+
def _update_plotly_titles(figures, input_group, title_template):
|
98
|
+
for figure in figures:
|
99
|
+
|
100
|
+
current_title = figure.figure.layout.title.text
|
101
|
+
|
102
|
+
input_description = " and ".join(
|
103
|
+
f"{key}: {_get_input_id(value)}" for key, value in input_group.items()
|
104
|
+
)
|
88
105
|
|
89
|
-
for i, figure in enumerate(figures):
|
90
106
|
figure.figure.layout.title.text = title_template.format(
|
91
107
|
current_title=f"{current_title} " if current_title else "",
|
92
|
-
input_description=
|
93
|
-
f"{k}: {v if isinstance(v, str) else ', '.join(item.input_id for item in v) if isinstance(v, list) and all(hasattr(item, 'input_id') for item in v) else v.input_id}"
|
94
|
-
for k, v in input_groups[i].items()
|
95
|
-
),
|
108
|
+
input_description=input_description,
|
96
109
|
)
|
97
110
|
|
98
111
|
|
99
|
-
def _update_matplotlib_titles(figures,
|
100
|
-
|
101
|
-
|
102
|
-
|
112
|
+
def _update_matplotlib_titles(figures, input_group, title_template):
|
113
|
+
for figure in figures:
|
114
|
+
|
115
|
+
current_title = (
|
116
|
+
figure.figure._suptitle.get_text() if figure.figure._suptitle else ""
|
117
|
+
)
|
118
|
+
|
119
|
+
input_description = " and ".join(
|
120
|
+
f"{key}: {_get_input_id(value)}" for key, value in input_group.items()
|
121
|
+
)
|
103
122
|
|
104
|
-
for i, figure in enumerate(figures):
|
105
123
|
figure.figure.suptitle(
|
106
124
|
title_template.format(
|
107
125
|
current_title=f"{current_title} " if current_title else "",
|
108
|
-
input_description=
|
109
|
-
f"{k}: {v if isinstance(v, str) else ', '.join(item.input_id for item in v) if isinstance(v, list) and all(hasattr(item, 'input_id') for item in v) else v.input_id}"
|
110
|
-
for k, v in input_groups[i].items()
|
111
|
-
),
|
126
|
+
input_description=input_description,
|
112
127
|
)
|
113
128
|
)
|
114
129
|
|
@@ -120,11 +135,12 @@ def _combine_figures(figure_lists: List[List[Any]], input_groups: List[Dict[str,
|
|
120
135
|
|
121
136
|
title_template = "{current_title}({input_description})"
|
122
137
|
|
123
|
-
for figures in
|
138
|
+
for idx, figures in enumerate(figure_lists):
|
139
|
+
input_group = input_groups[idx]
|
124
140
|
if is_plotly_figure(figures[0].figure):
|
125
|
-
_update_plotly_titles(figures,
|
141
|
+
_update_plotly_titles(figures, input_group, title_template)
|
126
142
|
elif is_matplotlib_figure(figures[0].figure):
|
127
|
-
_update_matplotlib_titles(figures,
|
143
|
+
_update_matplotlib_titles(figures, input_group, title_template)
|
128
144
|
else:
|
129
145
|
logger.warning("Cannot properly annotate png figures")
|
130
146
|
|
@@ -8,6 +8,7 @@ Models entrypoint
|
|
8
8
|
|
9
9
|
from .dataset.dataset import VMDataset
|
10
10
|
from .figure import Figure
|
11
|
+
from .input import VMInput
|
11
12
|
from .model import R_MODEL_TYPES, ModelAttributes, VMModel
|
12
13
|
from .test.metric import Metric
|
13
14
|
from .test.metric_result import MetricResult
|
@@ -20,6 +21,7 @@ from .test_suite.runner import TestSuiteRunner
|
|
20
21
|
from .test_suite.test_suite import TestSuite
|
21
22
|
|
22
23
|
__all__ = [
|
24
|
+
"VMInput",
|
23
25
|
"VMDataset",
|
24
26
|
"VMModel",
|
25
27
|
"Figure",
|
@@ -7,6 +7,7 @@ Dataset class wrapper
|
|
7
7
|
"""
|
8
8
|
|
9
9
|
import warnings
|
10
|
+
from copy import deepcopy
|
10
11
|
|
11
12
|
import numpy as np
|
12
13
|
import pandas as pd
|
@@ -14,6 +15,7 @@ import polars as pl
|
|
14
15
|
|
15
16
|
from validmind.logging import get_logger
|
16
17
|
from validmind.models import FunctionModel, PipelineModel
|
18
|
+
from validmind.vm_models.input import VMInput
|
17
19
|
from validmind.vm_models.model import VMModel
|
18
20
|
|
19
21
|
from .utils import ExtraColumns, as_df, compute_predictions, convert_index_to_datetime
|
@@ -21,7 +23,7 @@ from .utils import ExtraColumns, as_df, compute_predictions, convert_index_to_da
|
|
21
23
|
logger = get_logger(__name__)
|
22
24
|
|
23
25
|
|
24
|
-
class VMDataset:
|
26
|
+
class VMDataset(VMInput):
|
25
27
|
"""Base class for VM datasets
|
26
28
|
|
27
29
|
Child classes should be used to support new dataset types (tensor, polars etc)
|
@@ -60,7 +62,6 @@ class VMDataset:
|
|
60
62
|
text_column: str = None,
|
61
63
|
extra_columns: dict = None,
|
62
64
|
target_class_labels: dict = None,
|
63
|
-
options: dict = None,
|
64
65
|
):
|
65
66
|
"""
|
66
67
|
Initializes a VMDataset instance.
|
@@ -77,7 +78,6 @@ class VMDataset:
|
|
77
78
|
feature_columns (str, optional): The feature column names of the dataset. Defaults to None.
|
78
79
|
text_column (str, optional): The text column name of the dataset for nlp tasks. Defaults to None.
|
79
80
|
target_class_labels (Dict, optional): The class labels for the target columns. Defaults to None.
|
80
|
-
options (Dict, optional): Additional options for the dataset. Defaults to None.
|
81
81
|
"""
|
82
82
|
# initialize input_id
|
83
83
|
self.input_id = input_id
|
@@ -101,8 +101,6 @@ class VMDataset:
|
|
101
101
|
if date_time_index:
|
102
102
|
self._df = convert_index_to_datetime(self._df)
|
103
103
|
|
104
|
-
self.options = options
|
105
|
-
|
106
104
|
self.columns = columns or []
|
107
105
|
self.column_aliases = {}
|
108
106
|
self.target_column = target_column
|
@@ -199,6 +197,56 @@ class VMDataset:
|
|
199
197
|
"Cannot use precomputed probabilities without precomputed predictions"
|
200
198
|
)
|
201
199
|
|
200
|
+
def with_options(self, **kwargs) -> "VMDataset":
|
201
|
+
"""Support options provided when passing an input to run_test or run_test_suite
|
202
|
+
|
203
|
+
Example:
|
204
|
+
```python
|
205
|
+
# to only use a certain subset of columns in the dataset:
|
206
|
+
run_test(
|
207
|
+
"validmind.SomeTestID",
|
208
|
+
inputs={
|
209
|
+
"dataset": {
|
210
|
+
"input_id": "my_dataset_id",
|
211
|
+
"columns": ["col1", "col2"],
|
212
|
+
}
|
213
|
+
}
|
214
|
+
)
|
215
|
+
|
216
|
+
# behind the scenes, this retrieves the dataset object (VMDataset) from the registry
|
217
|
+
# and then calls the `with_options()` method and passes `{"columns": ...}`
|
218
|
+
```
|
219
|
+
|
220
|
+
Args:
|
221
|
+
**kwargs: Options:
|
222
|
+
- columns: Filter columns in the dataset
|
223
|
+
|
224
|
+
Returns:
|
225
|
+
VMDataset: A new instance of the dataset with only the specified columns
|
226
|
+
"""
|
227
|
+
if "columns" in kwargs:
|
228
|
+
# filter columns (create a temp copy of self with only specified columns)
|
229
|
+
# TODO: need a more robust mechanism for this as we expand on this feature
|
230
|
+
columns = kwargs.pop("columns")
|
231
|
+
|
232
|
+
new = deepcopy(self)
|
233
|
+
|
234
|
+
new._set_feature_columns(
|
235
|
+
[col for col in new.feature_columns if col in columns]
|
236
|
+
)
|
237
|
+
new.text_column = new.text_column if new.text_column in columns else None
|
238
|
+
new.target_column = (
|
239
|
+
new.target_column if new.target_column in columns else None
|
240
|
+
)
|
241
|
+
new.extra_columns.extras = new.extra_columns.extras.intersection(columns)
|
242
|
+
|
243
|
+
return new
|
244
|
+
|
245
|
+
if kwargs:
|
246
|
+
raise NotImplementedError(
|
247
|
+
f"Options {kwargs} are not supported for this input"
|
248
|
+
)
|
249
|
+
|
202
250
|
def assign_predictions(
|
203
251
|
self,
|
204
252
|
model: VMModel,
|
@@ -444,7 +492,6 @@ class DataFrameDataset(VMDataset):
|
|
444
492
|
feature_columns: list = None,
|
445
493
|
text_column: str = None,
|
446
494
|
target_class_labels: dict = None,
|
447
|
-
options: dict = None,
|
448
495
|
date_time_index: bool = False,
|
449
496
|
):
|
450
497
|
"""
|
@@ -459,7 +506,6 @@ class DataFrameDataset(VMDataset):
|
|
459
506
|
feature_columns (list, optional): The feature columns of the dataset. Defaults to None.
|
460
507
|
text_column (str, optional): The text column name of the dataset for NLP tasks. Defaults to None.
|
461
508
|
target_class_labels (dict, optional): The class labels for the target columns. Defaults to None.
|
462
|
-
options (dict, optional): Additional options for the dataset. Defaults to None.
|
463
509
|
date_time_index (bool, optional): Whether to use date-time index. Defaults to False.
|
464
510
|
"""
|
465
511
|
index = None
|
@@ -478,7 +524,6 @@ class DataFrameDataset(VMDataset):
|
|
478
524
|
feature_columns=feature_columns,
|
479
525
|
text_column=text_column,
|
480
526
|
target_class_labels=target_class_labels,
|
481
|
-
options=options,
|
482
527
|
date_time_index=date_time_index,
|
483
528
|
)
|
484
529
|
|
@@ -498,7 +543,6 @@ class PolarsDataset(VMDataset):
|
|
498
543
|
feature_columns: list = None,
|
499
544
|
text_column: str = None,
|
500
545
|
target_class_labels: dict = None,
|
501
|
-
options: dict = None,
|
502
546
|
date_time_index: bool = False,
|
503
547
|
):
|
504
548
|
"""
|
@@ -513,7 +557,6 @@ class PolarsDataset(VMDataset):
|
|
513
557
|
feature_columns (list, optional): The feature columns of the dataset. Defaults to None.
|
514
558
|
text_column (str, optional): The text column name of the dataset for NLP tasks. Defaults to None.
|
515
559
|
target_class_labels (dict, optional): The class labels for the target columns. Defaults to None.
|
516
|
-
options (dict, optional): Additional options for the dataset. Defaults to None.
|
517
560
|
date_time_index (bool, optional): Whether to use date-time index. Defaults to False.
|
518
561
|
"""
|
519
562
|
super().__init__(
|
@@ -528,7 +571,6 @@ class PolarsDataset(VMDataset):
|
|
528
571
|
feature_columns=feature_columns,
|
529
572
|
text_column=text_column,
|
530
573
|
target_class_labels=target_class_labels,
|
531
|
-
options=options,
|
532
574
|
date_time_index=date_time_index,
|
533
575
|
)
|
534
576
|
|
@@ -551,7 +593,6 @@ class TorchDataset(VMDataset):
|
|
551
593
|
feature_columns: list = None,
|
552
594
|
text_column: str = None,
|
553
595
|
target_class_labels: dict = None,
|
554
|
-
options: dict = None,
|
555
596
|
):
|
556
597
|
"""
|
557
598
|
Initializes a TorchDataset instance.
|
@@ -609,5 +650,4 @@ class TorchDataset(VMDataset):
|
|
609
650
|
text_column=text_column,
|
610
651
|
extra_columns=extra_columns,
|
611
652
|
target_class_labels=target_class_labels,
|
612
|
-
options=options,
|
613
653
|
)
|
@@ -0,0 +1,31 @@
|
|
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
|
+
"""Base class for ValidMind Input types"""
|
6
|
+
|
7
|
+
from abc import ABC
|
8
|
+
|
9
|
+
|
10
|
+
class VMInput(ABC):
|
11
|
+
"""
|
12
|
+
Base class for ValidMind Input types
|
13
|
+
"""
|
14
|
+
|
15
|
+
def with_options(self, **kwargs) -> "VMInput":
|
16
|
+
"""
|
17
|
+
Allows for setting options on the input object that are passed by the user
|
18
|
+
when using the input to run a test or set of tests
|
19
|
+
|
20
|
+
To allow options, just override this method in the subclass (see VMDataset)
|
21
|
+
and ensure that it returns a new instance of the input with the specified options
|
22
|
+
set.
|
23
|
+
|
24
|
+
Args:
|
25
|
+
**kwargs: Arbitrary keyword arguments that will be passed to the input object
|
26
|
+
|
27
|
+
Returns:
|
28
|
+
VMInput: A new instance of the input with the specified options set
|
29
|
+
"""
|
30
|
+
if kwargs:
|
31
|
+
raise NotImplementedError("This type of input does not support options")
|
@@ -7,11 +7,13 @@ Model class wrapper module
|
|
7
7
|
"""
|
8
8
|
import importlib
|
9
9
|
import inspect
|
10
|
-
from abc import
|
10
|
+
from abc import abstractmethod
|
11
11
|
from dataclasses import dataclass
|
12
12
|
|
13
13
|
from validmind.errors import MissingOrInvalidModelPredictFnError
|
14
14
|
|
15
|
+
from .input import VMInput
|
16
|
+
|
15
17
|
SUPPORTED_LIBRARIES = {
|
16
18
|
"catboost": "CatBoostModel",
|
17
19
|
"xgboost": "XGBoostModel",
|
@@ -77,7 +79,7 @@ class ModelAttributes:
|
|
77
79
|
)
|
78
80
|
|
79
81
|
|
80
|
-
class VMModel(
|
82
|
+
class VMModel(VMInput):
|
81
83
|
"""
|
82
84
|
An base class that wraps a trained model instance and its associated data.
|
83
85
|
|
@@ -78,13 +78,12 @@ class TestInput:
|
|
78
78
|
... (any): Any other arbitrary inputs that can be used by tests
|
79
79
|
"""
|
80
80
|
|
81
|
-
# TODO: we need to look into adding metadata for test inputs and logging that
|
82
|
-
|
83
81
|
def __init__(self, inputs):
|
84
82
|
"""Initialize with either a dictionary of inputs"""
|
85
83
|
for key, value in inputs.items():
|
86
84
|
# 1) retrieve input object from input registry if an input_id string is provided
|
87
85
|
# 2) check the input_id type if a list of inputs (mix of strings and objects) is provided
|
86
|
+
# 3) if its a dict, it should contain the `input_id` key as well as other options
|
88
87
|
if isinstance(value, str):
|
89
88
|
value = input_registry.get(key=value)
|
90
89
|
elif isinstance(value, list) or isinstance(value, tuple):
|
@@ -92,6 +91,14 @@ class TestInput:
|
|
92
91
|
input_registry.get(key=v) if isinstance(v, str) else v
|
93
92
|
for v in value
|
94
93
|
]
|
94
|
+
elif isinstance(value, dict):
|
95
|
+
assert "input_id" in value, (
|
96
|
+
"Input dictionary must contain an 'input_id' key "
|
97
|
+
"to retrieve the input object from the input registry."
|
98
|
+
)
|
99
|
+
value = input_registry.get(key=value.get("input_id")).with_options(
|
100
|
+
**{k: v for k, v in value.items() if k != "input_id"}
|
101
|
+
)
|
95
102
|
|
96
103
|
setattr(self, key, value)
|
97
104
|
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "2.4.10"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/classification/datasets/taiwan_credit.csv
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred/CPIAUCSL.csv
RENAMED
File without changes
|
{validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred/CSUSHPISA.csv
RENAMED
File without changes
|
{validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred/DRSFRMACBS.csv
RENAMED
File without changes
|
{validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred/FEDFUNDS.csv
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred/MORTGAGE30US.csv
RENAMED
File without changes
|
{validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred/UNRATE.csv
RENAMED
File without changes
|
{validmind-2.4.10 → validmind-2.4.13}/validmind/datasets/regression/datasets/fred_loan_rates.csv
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|