This rendered site is an archived version of the changes last made by Beck, minus some proprietary content from private repos — Visit live site

  • Documentation
    • About ​ValidMind
    • Get Started
    • Guides
    • Support

    • ValidMind Library
    • Python API
    • Public REST API

    • Training Courses

On this page

  • Introduction
  • About ValidMind
    • Before you begin
    • New to ValidMind?
    • Key concepts
  • Setting up
    • Install the ValidMind Library
    • Initialize the ValidMind Library
  • Getting to know ValidMind
    • Preview the documentation template
    • Explore available tests
  • Upgrade ValidMind
  • In summary
  • Next steps
    • Start the development process
  • Edit this page
  • Report an issue

ValidMind for development 1 — Set up the ValidMind Library

Learn how to use ValidMind for your end-to-end documentation process based on common development scenarios with our series of four introductory notebooks. This first notebook walks you through the initial setup of the ValidMind Library.

These notebooks use a binary classification model as an example, but the same principles shown here apply to other record (model) types.

Learn by doing

Our course tailor-made for developers new to ValidMind combines this series of notebooks with more a more in-depth introduction to the ValidMind Platform — Developer Fundamentals

Introduction

Development aims to produce a fit-for-purpose champion by conducting thorough testing and analysis, supporting the capabilities of the champion with evidence in the form of documentation and test results. Documentation should be clear and comprehensive, ideally following a structure or template covering all aspects of compliance with risk regulation.

A binary classification model is a type of predictive model used in churn analysis to identify customers who are likely to leave a service or subscription by analyzing various behavioral, transactional, and demographic factors.

  • This model helps businesses take proactive measures to retain at-risk customers by offering personalized incentives, improving customer service, or adjusting pricing strategies.
  • Effective validation of a churn prediction model ensures that businesses can accurately identify potential churners, optimize retention efforts, and enhance overall customer satisfaction while minimizing revenue loss.

About ValidMind

ValidMind is a suite of tools for managing risk, including risk associated with AI and statistical models.

You use the ValidMind Library to automate documentation and validation tests, and then use the ValidMind Platform to collaborate on documentation. Together, these products simplify risk management, facilitate compliance with regulations and institutional standards, and enhance collaboration between yourself and validators.

Before you begin

This notebook assumes you have basic familiarity with Python, including an understanding of how functions work. If you are new to Python, you can still run the notebook but we recommend further familiarizing yourself with the language.

If you encounter errors due to missing modules in your Python environment, install the modules with pip install, and then re-run the notebook. For more help, refer to Installing Python Modules.

New to ValidMind?

If you haven't already seen our documentation on the ValidMind Library, we recommend you begin by exploring the available resources in this section. There, you can learn more about documenting records such as models and running tests, as well as find code samples and our Python Library API reference.

For access to all features available in this notebook, you'll need access to a ValidMind account.

Register with ValidMind

Key concepts

record: A tool tracked in the ValidMind inventory, such as a model. Records include traditional statistical models, legacy systems, artificial intelligence/machine learning models, large language models (LLMs), agentic AI systems, and other documentable items that benefit from oversight, testing, and lifecycle management.

model: SR 26-2 (which supersedes SR 11-7) defines a model as a "complex quantitative method, system, or approach that applies statistical, economic, or financial theories to process input data into quantitative estimates." Simple arithmetic, deterministic rule-based processes, or software without statistical, economic, or financial theories underpinning their design or use are generally outside SR 26-2’s definition of a model. Within ValidMind, a model is a type of record tracked in the inventory.

documentation, model documentation: A structured and detailed document pertaining to a record, encompassing key components such as its underlying assumptions, methodologies, data sources, inputs, performance metrics, evaluations, limitations, and intended uses. Within the realm of risk management, this documentation serves to ensure transparency, adherence to regulatory requirements, and a clear understanding of potential risks associated with the record's application.

document template: Lays out the structure of documents, segmented into various sections and sub-sections, and functions as a test suite specifying the tests that should be run, and how the results should be displayed. Document templates help automate your development, validation, monitoring, and other risk management processes. Document templates are available for default ValidMind document types as well as custom document types.

documentation template: A default ValidMind document type that serves as a standardized framework for developing and documenting records, including sections designated for record details, data descriptions, test results, and performance metrics. By outlining required documentation and recommended analyses, document templates ensure consistency and completeness across documentation and help guide developers through a systematic development process while promoting comparability and traceability of development outcomes.

test: A function contained in the ValidMind Library, designed to run a specific quantitative test on the dataset or record. Test results are logged to the ValidMind Platform, where they are attached to documents. Tests are the building blocks of ValidMind, used to evaluate and document records and datasets, and can be run individually or as part of a suite defined by your templates.

test suite: A collection of tests designed to run together to automate and generate documentation end-to-end for specific use cases. (Learn more: test_suites)

metric: A subset of tests that do not have thresholds. In the context of this notebook, metrics and tests can be thought of as interchangeable concepts.

custom test: Functions that you define to evaluate your record or dataset. These functions can be registered with the ValidMind Library to be used in the ValidMind Platform.

inputs: Objects to be evaluated and documented in the ValidMind Library. They can be any of the following:

  • model: A single record that has been initialized in ValidMind with init_model(). Despite the naming convention, model objects can be any type of record you want to test, document, validate, or monitor with ValidMind.
  • dataset: A single dataset that has been initialized in ValidMind with init_dataset().
  • models: A list of ValidMind records - usually this is used when you want to compare multiple records in your custom tests.
  • datasets: A list of ValidMind datasets - usually this is used when you want to compare multiple datasets in your custom tests. (Learn more: Run tests with multiple datasets)

parameters: Additional arguments that can be passed when running a ValidMind test, used to pass additional information to a test, customize its behavior, or provide additional context.

outputs: Custom tests can return elements like tables or plots. Tables may be a list of dictionaries (each representing a row) or a pandas DataFrame. Plots may be matplotlib or plotly figures.

Setting up

Install the ValidMind Library

Recommended Python versions

Python 3.8 <= x <= 3.14

To install the library:

%pip install -q validmind
Note: you may need to restart the kernel to use updated packages.

Initialize the ValidMind Library

The ValidMind Library provides a rich collection of documentation tools and test suites, from documenting descriptions of datasets to validation and testing using a variety of open-source testing frameworks.

Register sample model

Let's first register a sample record (model) for use with this notebook:

  1. In a browser, log in to ValidMind.

  2. In the left sidebar, select Inventory.

  3. Select Model by clicking on {Record} Inventory, where {Record} is the currently active type of record. (Learn more: Register records in the inventory)

  4. Click + Register Model.

  5. Enter the model details and click Next > to continue to assignment of inventory record stakeholders.

  6. Select your own name under the Record Owner drop-down.

  7. Click Register Model to add the model to your inventory.

Apply documentation template

Once you've registered your model, let's select a documentation template. A template predefines sections for your documentation and provides a general outline to follow, making the documentation process much easier.

  1. In the left sidebar that appears for your model, click Documents and select Development.

    If you cannot locate your Development document, make sure Development type documents are enabled for model records and create a new document. (Learn more: Manage documents)

  2. Under Template, select Binary classification.

  3. Click Use Template to apply the template.

Get your code snippet

Initialize the ValidMind Library with the code snippet unique to each record per document, ensuring your test results are uploaded to the correct record and automatically populated in the right document in the ValidMind Platform when you run the Library.

  1. On the left sidebar that appears for your model, select Getting Started and select Development from the Document drop-down menu.

  2. Click Copy snippet to clipboard.

  3. Next, load your model identifier credentials from an .env file or replace the placeholder with your own code snippet:

# Load your model identifier credentials from an `.env` file

%load_ext dotenv
%dotenv .env

# Or replace with your code snippet

import validmind as vm

vm.init(
    # api_host="...",
    # api_key="...",
    # api_secret="...",
    # model="...",
    document="documentation",
)
2026-07-31 16:38:52,246 - INFO(validmind.api_client): 🎉 Connected to ValidMind!
📊 Model: [ValidMind Academy] Model development (ID: cmalgf3qi02ce199qm3rdkl46)
📁 Document Type: model_documentation

Getting to know ValidMind

Preview the documentation template

Let's verify that you have connected the ValidMind Library to the ValidMind Platform and that the appropriate template is selected for your model.

You will upload documentation and test results unique to your model based on this template later on. For now, take a look at the default structure that the template provides with the vm.preview_template() function from the ValidMind library and note the empty sections:

vm.preview_template()
▶ 1. Conceptual Soundness ('conceptual_soundness')
▶ 1.1. Model Overview ('model_overview')
Text Block: 'model_overview'
▶ 1.2. Intended Use and Business Use Case ('intended_use_business_use_case')
▶ 1.2.1. Intended Use ('intended_use')

Empty Section

▶ 1.2.2. Regulatory Requirements ('regulatory_requirements')

Empty Section

▶ 1.2.3. Model Limitations ('model_limitations')

Empty Section

▶ 1.3. Model Selection ('model_selection')

Empty Section

▶ 2. Data Preparation ('data_preparation')
▶ 2.1. Data description ('data_description')
Text Block: 'dataset_summary_text'
▶ Test: Dataset Description ('validmind.data_validation.DatasetDescription')

Dataset Description

Provides comprehensive analysis and statistical summaries of each column in a machine learning model's dataset.

Purpose

The test depicted in the script is meant to run a comprehensive analysis on a Machine Learning model's datasets. The test or metric is implemented to obtain a complete summary of the columns in the dataset, including vital statistics of each column such as count, distinct values, missing values, histograms for numerical, categorical, boolean, and text columns. This summary gives a comprehensive overview of the dataset to better understand the characteristics of the data that the model is trained on or evaluates.

Test Mechanism

The DatasetDescription class accomplishes the purpose as follows: firstly, the test method "run" infers the data type of each column in the dataset and stores the details (id, column type). For each column, the "describe_column" method is invoked to collect statistical information about the column, including count, missing value count and its proportion to the total, unique value count, and its proportion to the total. Depending on the data type of a column, histograms are generated that reflect the distribution of data within the column. Numerical columns use the "get_numerical_histograms" method to calculate histogram distribution, whereas for categorical, boolean and text columns, a histogram is computed with frequencies of each unique value in the datasets. For unsupported types, an error is raised. Lastly, a summary table is built to aggregate all the statistical insights and histograms of the columns in a dataset.

Signs of High Risk

  • High ratio of missing values to total values in one or more columns which may impact the quality of the predictions.
  • Unsupported data types in dataset columns.
  • Large number of unique values in the dataset's columns which might make it harder for the model to establish patterns.
  • Extreme skewness or irregular distribution of data as reflected in the histograms.

Strengths

  • Provides a detailed analysis of the dataset with versatile summaries like count, unique values, histograms, etc.
  • Flexibility in handling different types of data: numerical, categorical, boolean, and text.
  • Useful in detecting problems in the dataset like missing values, unsupported data types, irregular data distribution, etc.
  • The summary gives a comprehensive understanding of dataset features allowing developers to make informed decisions.

Limitations

  • The computation can be expensive from a resource standpoint, particularly for large datasets with numerous columns.
  • The histograms use an arbitrary number of bins which may not be the optimal number of bins for specific data distribution.
  • Unsupported data types for columns will raise an error which may limit evaluating the dataset.
  • Columns with all null or missing values are not included in histogram computation.
  • This test only validates the quality of the dataset but doesn't address the model's performance directly.

Required Inputs: dataset

Parameters:

Parameter Default Value

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "dataset": "my_vm_dataset"
}
params = {}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.data_validation.DatasetDescription", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
Text Block: 'data_quality_tests_text'
▶ Test: Class Imbalance ('validmind.data_validation.ClassImbalance')

Class Imbalance

Evaluates and quantifies class distribution imbalance in a dataset used by a machine learning model.

Purpose

The Class Imbalance test is designed to evaluate the distribution of target classes in a dataset that's utilized by a machine learning model. Specifically, it aims to ensure that the classes aren't overly skewed, which could lead to bias in the model's predictions. It's crucial to have a balanced training dataset to avoid creating a model that's biased with high accuracy for the majority class and low accuracy for the minority class.

Test Mechanism

This Class Imbalance test operates by calculating the frequency (expressed as a percentage) of each class in the target column of the dataset. It then checks whether each class appears in at least a set minimum percentage of the total records. This minimum percentage is a modifiable parameter, but the default value is set to 10%.

Signs of High Risk

  • Any class that represents less than the pre-set minimum percentage threshold is marked as high risk, implying a potential class imbalance.
  • The function provides a pass/fail outcome for each class based on this criterion.
  • Fundamentally, if any class fails this test, it's highly likely that the dataset possesses imbalanced class distribution.

Strengths

  • The test can spot under-represented classes that could affect the efficiency of a machine learning model.
  • The calculation is straightforward and swift.
  • The test is highly informative because it not only spots imbalance, but it also quantifies the degree of imbalance.
  • The adjustable threshold enables flexibility and adaptation to differing use-cases or domain-specific needs.
  • The test creates a visually insightful plot showing the classes and their corresponding proportions, enhancing interpretability and comprehension of the data.

Limitations

  • The test might struggle to perform well or provide vital insights for datasets with a high number of classes. In such cases, the imbalance could be inevitable due to the inherent class distribution.
  • Sensitivity to the threshold value might result in faulty detection of imbalance if the threshold is set excessively high.
  • Regardless of the percentage threshold, it doesn't account for varying costs or impacts of misclassifying different classes, which might fluctuate based on specific applications or domains.
  • While it can identify imbalances in class distribution, it doesn't provide direct methods to address or correct these imbalances.
  • The test is only applicable for classification operations and unsuitable for regression or clustering tasks.

Required Inputs: dataset

Parameters:

Parameter Default Value
min_percent_threshold 10

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "dataset": "my_vm_dataset"
}
params = {
    "min_percent_threshold": "my_vm_min_percent_threshold"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.data_validation.ClassImbalance", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ Test: Duplicates ('validmind.data_validation.Duplicates')

Duplicates

Tests dataset for duplicate entries, ensuring model reliability via data quality verification.

Purpose

The 'Duplicates' test is designed to check for duplicate rows within the dataset provided to the model. It serves as a measure of data quality, ensuring that the model isn't merely memorizing duplicate entries or being swayed by redundant information. This is an important step in the pre-processing of data for both classification and regression tasks.

Test Mechanism

This test operates by checking each row for duplicates in the dataset. If a text column is specified in the dataset, the test is conducted on this column; if not, the test is run on all feature columns. The number and percentage of duplicates are calculated and returned in a DataFrame. Additionally, a test is passed if the total count of duplicates falls below a specified minimum threshold.

Signs of High Risk

  • A high number of duplicate rows in the dataset, which can lead to overfitting where the model performs well on the training data but poorly on unseen data.
  • A high percentage of duplicate rows in the dataset, indicating potential problems with data collection or processing.

Strengths

  • Assists in improving the reliability of the model's training process by ensuring the training data is not contaminated with duplicate entries, which can distort statistical analyses.
  • Provides both absolute numbers and percentage values of duplicate rows, giving a thorough overview of data quality.
  • Highly customizable as it allows for setting a user-defined minimum threshold to determine if the test has been passed.

Limitations

  • Does not distinguish between benign duplicates (i.e., coincidental identical entries in different rows) and problematic duplicates originating from data collection or processing errors.
  • The test becomes more computationally intensive as the size of the dataset increases, which might not be suitable for very large datasets.
  • Can only check for exact duplicates and may miss semantically similar information packaged differently.

Required Inputs: dataset

Parameters:

Parameter Default Value
min_threshold 1

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "dataset": "my_vm_dataset"
}
params = {
    "min_threshold": "my_vm_min_threshold"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.data_validation.Duplicates", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ Test: High Cardinality ('validmind.data_validation.HighCardinality')

High Cardinality

Assesses the number of unique values in categorical columns to detect high cardinality and potential overfitting.

Purpose

The “High Cardinality” test is used to evaluate the number of unique values present in the categorical columns of a dataset. In this context, high cardinality implies the presence of a large number of unique, non-repetitive values in the dataset.

Test Mechanism

The test first infers the dataset's type and then calculates an initial numeric threshold based on the test parameters. It only considers columns classified as "Categorical". For each of these columns, the number of distinct values (n_distinct) and the percentage of distinct values (p_distinct) are calculated. The test will pass if n_distinct is less than the calculated numeric threshold. Lastly, the results, which include details such as column name, number of distinct values, and pass/fail status, are compiled into a table.

Signs of High Risk

  • A large number of distinct values (high cardinality) in one or more categorical columns implies a high risk.
  • A column failing the test (n_distinct >= num_threshold) is another indicator of high risk.

Strengths

  • The High Cardinality test is effective in early detection of potential overfitting and unwanted noise.
  • It aids in identifying potential outliers and inconsistencies, thereby improving data quality.
  • The test can be applied to both classification and regression task types, demonstrating its versatility.

Limitations

  • The test is restricted to only "Categorical" data types and is thus not suitable for numerical or continuous features, limiting its scope.
  • The test does not consider the relevance or importance of unique values in categorical features, potentially causing it to overlook critical data points.
  • The threshold (both number and percent) used for the test is static and may not be optimal for diverse datasets and varied applications. Further mechanisms to adjust and refine this threshold could enhance its effectiveness.

Required Inputs: dataset

Parameters:

Parameter Default Value
num_threshold 100
percent_threshold 0.1
threshold_type 'percent'

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "dataset": "my_vm_dataset"
}
params = {
    "num_threshold": "my_vm_num_threshold",
    "percent_threshold": "my_vm_percent_threshold",
    "threshold_type": "my_vm_threshold_type"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.data_validation.HighCardinality", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ Test: Missing Values ('validmind.data_validation.MissingValues')

Missing Values

Evaluates dataset quality by ensuring missing value percentage across all features does not exceed a set threshold.

Purpose

The Missing Values test is designed to evaluate the quality of a dataset by measuring the number of missing values across all features. The objective is to ensure that the ratio of missing data to total data is less than a predefined threshold (as a percentage), defaulting to 1.0, in order to maintain the data quality necessary for reliable predictive strength in a machine learning model.

Test Mechanism

The mechanism for this test involves iterating through each column of the dataset, counting missing values (represented as NaNs), and calculating the percentage they represent against the total number of rows. The test then checks if the missing value percentage is less than or equal to the predefined min_percentage_threshold. The results are shown in a table summarizing each column, the number of missing values, the percentage of missing values in each column, and a Pass/Fail status based on the threshold comparison.

Signs of High Risk

  • When the missing value percentage in any column exceeds the min_percentage_threshold value.
  • Presence of missing values across many columns, leading to multiple instances of failing the threshold.

Strengths

  • Quick and granular identification of missing data across each feature in the dataset.
  • Provides an effective and straightforward means of maintaining data quality, essential for constructing efficient machine learning models.

Limitations

  • Does not suggest the root causes of the missing values or recommend ways to impute or handle them.
  • May overlook features with significant missing data but still less than the min_percentage_threshold, potentially impacting the model.
  • Does not account for data encoded as values like "-999" or "None," which might not technically classify as missing but could bear similar implications.

Required Inputs: dataset

Parameters:

Parameter Default Value
min_percentage_threshold 1.0

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "dataset": "my_vm_dataset"
}
params = {
    "min_percentage_threshold": "my_vm_min_percentage_threshold"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.data_validation.MissingValues", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ Test: Skewness ('validmind.data_validation.Skewness')

Skewness

Evaluates the skewness of numerical data in a dataset to check against a defined threshold, aiming to ensure data quality and optimize model performance.

Purpose

The purpose of the Skewness test is to measure the asymmetry in the distribution of data within a predictive machine learning model. Specifically, it evaluates the divergence of said distribution from a normal distribution. Understanding the level of skewness helps identify data quality issues, which are crucial for optimizing the performance of traditional machine learning models in both classification and regression settings.

Test Mechanism

This test calculates the skewness of numerical columns in the dataset, focusing specifically on numerical data types. The calculated skewness value is then compared against a predetermined maximum threshold, which is set by default to 1. If the skewness value is less than this maximum threshold, the test passes; otherwise, it fails. The test results, along with the skewness values and column names, are then recorded for further analysis.

Signs of High Risk

  • Substantial skewness levels that significantly exceed the maximum threshold.
  • Persistent skewness in the data, indicating potential issues with the foundational assumptions of the machine learning model.
  • Subpar model performance, erroneous predictions, or biased inferences due to skewed data distributions.

Strengths

  • Fast and efficient identification of unequal data distributions within a machine learning model.
  • Adjustable maximum threshold parameter, allowing for customization based on user needs.
  • Provides a clear quantitative measure to mitigate model risks related to data skewness.

Limitations

  • Only evaluates numeric columns, potentially missing skewness or bias in non-numeric data.
  • Assumes that data should follow a normal distribution, which may not always be applicable to real-world data.
  • Subjective threshold for risk grading, requiring expert input and recurrent iterations for refinement.

Required Inputs: dataset

Parameters:

Parameter Default Value
max_threshold 1

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "dataset": "my_vm_dataset"
}
params = {
    "max_threshold": "my_vm_max_threshold"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.data_validation.Skewness", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ Test: Unique Rows ('validmind.data_validation.UniqueRows')

Unique Rows

Verifies the diversity of the dataset by ensuring that the count of unique rows exceeds a prescribed threshold.

Purpose

The UniqueRows test is designed to gauge the quality of the data supplied to the machine learning model by verifying that the count of distinct rows in the dataset exceeds a specific threshold, thereby ensuring a varied collection of data. Diversity in data is essential for training an unbiased and robust model that excels when faced with novel data.

Test Mechanism

The testing process starts with calculating the total number of rows in the dataset. Subsequently, the count of unique rows is determined for each column in the dataset. If the percentage of unique rows (calculated as the ratio of unique rows to the overall row count) is less than the prescribed minimum percentage threshold given as a function parameter, the test passes. The results are cached and a final pass or fail verdict is given based on whether all columns have successfully passed the test.

Signs of High Risk

  • A lack of diversity in data columns, demonstrated by a count of unique rows that falls short of the preset minimum percentage threshold, is indicative of high risk.
  • This lack of variety in the data signals potential issues with data quality, possibly leading to overfitting in the model and issues with generalization, thus posing a significant risk.

Strengths

  • The UniqueRows test is efficient in evaluating the data's diversity across each information column in the dataset.
  • This test provides a quick, systematic method to assess data quality based on uniqueness, which can be pivotal in developing effective and unbiased machine learning models.

Limitations

  • A limitation of the UniqueRows test is its assumption that the data's quality is directly proportionate to its uniqueness, which may not always hold true. There might be contexts where certain non-unique rows are essential and should not be overlooked.
  • The test does not consider the relative 'importance' of each column in predicting the output, treating all columns equally.
  • This test may not be suitable or useful for categorical variables, where the count of unique categories is inherently limited.

Required Inputs: dataset

Parameters:

Parameter Default Value
min_percent_threshold 1

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "dataset": "my_vm_dataset"
}
params = {
    "min_percent_threshold": "my_vm_min_percent_threshold"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.data_validation.UniqueRows", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ Test: Too Many Zero Values ('validmind.data_validation.TooManyZeroValues')

Too Many Zero Values

Identifies numerical columns in a dataset that contain an excessive number of zero values, defined by a threshold percentage.

Purpose

The 'TooManyZeroValues' test is utilized to identify numerical columns in the dataset that may present a quantity of zero values considered excessive. The aim is to detect situations where these may implicate data sparsity or a lack of variation, limiting their effectiveness within a machine learning model. The definition of 'too many' is quantified as a percentage of total values, with a default set to 0.03%.

Test Mechanism

This test is conducted by looping through each column in the dataset and categorizing those that pertain to numerical data. On identifying a numerical column, the function computes the total quantity of zero values and their ratio to the total row count. Should the proportion exceed a pre-set threshold parameter, set by default at 0.03%, the column is considered to have failed the test. The results for each column are summarized and reported, indicating the count and percentage of zero values for each numerical column, alongside a status indicating whether the column has passed or failed the test.

Signs of High Risk

  • Numerical columns showing a high ratio of zero values when compared to the total count of rows (exceeding the predetermined threshold).
  • Columns characterized by zero values across the board suggest a complete lack of data variation, signifying high risk.

Strengths

  • Assists in highlighting columns featuring an excess of zero values that could otherwise go unnoticed within a large dataset.
  • Provides the flexibility to alter the threshold that determines when the quantity of zero values becomes 'too many', thus catering to specific needs of a particular analysis or model.
  • Offers feedback in the form of both counts and percentages of zero values, which allows a closer inspection of the distribution and proportion of zeros within a column.
  • Targets specifically numerical data, thereby avoiding inappropriate application to non-numerical columns and mitigating the risk of false test failures.

Limitations

  • Is exclusively designed to check for zero values and doesn’t assess the potential impact of other values that could affect the dataset, such as extremely high or low figures, missing values, or outliers.
  • Lacks the ability to detect a repetitive pattern of zeros, which could be significant in time-series or longitudinal data.
  • Zero values can actually be meaningful in some contexts; therefore, tagging them as 'too many' could potentially misinterpret the data to some extent.
  • This test does not take into consideration the context of the dataset, and fails to recognize that within certain columns, a high number of zero values could be quite normal and not necessarily an indicator of poor data quality.
  • Cannot evaluate non-numerical or categorical columns, which might bring with them different types of concerns or issues.

Required Inputs: dataset

Parameters:

Parameter Default Value
max_percent_threshold 0.03

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "dataset": "my_vm_dataset"
}
params = {
    "max_percent_threshold": "my_vm_max_percent_threshold"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.data_validation.TooManyZeroValues", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ Test: IQR Outliers Table ('validmind.data_validation.IQROutliersTable')

IQR Outliers Table

Determines and summarizes outliers in numerical features using the Interquartile Range method.

Purpose

The "Interquartile Range Outliers Table" (IQROutliersTable) metric is designed to identify and summarize outliers within numerical features of a dataset using the Interquartile Range (IQR) method. This exercise is crucial in the pre-processing of data because outliers can substantially distort statistical analysis and impact the performance of machine learning models.

Test Mechanism

The IQR, which is the range separating the first quartile (25th percentile) from the third quartile (75th percentile), is calculated for each numerical feature within the dataset. An outlier is defined as a data point falling below the "Q1 - 1.5 * IQR" or above "Q3 + 1.5 * IQR" range. The test computes the number of outliers and their summary statistics (minimum, 25th percentile, median, 75th percentile, and maximum values) for each numerical feature. If no specific features are chosen, the test applies to all numerical features in the dataset. The default outlier threshold is set to 1.5 but can be customized by the user.

Signs of High Risk

  • A large number of outliers in multiple features.
  • Outliers significantly distanced from the mean value of variables.
  • Extremely high or low outlier values indicative of data entry errors or other data quality issues.

Strengths

  • Provides a comprehensive summary of outliers for each numerical feature, helping pinpoint features with potential quality issues.
  • The IQR method is robust to extremely high or low outlier values as it is based on quartile calculations.
  • Can be customized to work on selected features and set thresholds for outliers.

Limitations

  • Might cause false positives if the variable deviates from a normal or near-normal distribution, especially for skewed distributions.
  • Does not provide interpretation or recommendations for addressing outliers, relying on further analysis by users or data scientists.
  • Only applicable to numerical features, not categorical data.
  • Default thresholds may not be optimal for data with heavy pre-processing, manipulation, or inherently high kurtosis (heavy tails).

Required Inputs: dataset

Parameters:

Parameter Default Value
threshold 1.5

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "dataset": "my_vm_dataset"
}
params = {
    "threshold": "my_vm_threshold"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.data_validation.IQROutliersTable", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ Test: IQR Outliers Bar Plot ('validmind.data_validation.IQROutliersBarPlot')

IQR Outliers Bar Plot

Visualizes outlier distribution across percentiles in numerical data using the Interquartile Range (IQR) method.

Purpose

The InterQuartile Range Outliers Bar Plot (IQROutliersBarPlot) metric aims to visually analyze and evaluate the extent of outliers in numeric variables based on percentiles. Its primary purpose is to clarify the dataset's distribution, flag possible abnormalities in it, and gauge potential risks associated with processing potentially skewed data, which can affect the machine learning model's predictive prowess.

Test Mechanism

The examination invokes a series of steps:

  1. For every numeric feature in the dataset, the 25th percentile (Q1) and 75th percentile (Q3) are calculated before deriving the Interquartile Range (IQR), the difference between Q1 and Q3.
  2. Subsequently, the metric calculates the lower and upper thresholds by subtracting Q1 from the threshold times IQR and adding Q3 to threshold times IQR, respectively. The default threshold is set at 1.5.
  3. Any value in the feature that falls below the lower threshold or exceeds the upper threshold is labeled as an outlier.
  4. The number of outliers are tallied for different percentiles, such as [0-25], [25-50], [50-75], and [75-100].
  5. These counts are employed to construct a bar plot for the feature, showcasing the distribution of outliers across different percentiles.

Signs of High Risk

  • A prevalence of outliers in the data, potentially skewing its distribution.
  • Outliers dominating higher percentiles (75-100) which implies the presence of extreme values, capable of severely influencing the model's performance.
  • Certain features harboring most of their values as outliers, which signifies that these features might not contribute positively to the model's forecasting ability.

Strengths

  • Effectively identifies outliers in the data through visual means, facilitating easier comprehension and offering insights into the outliers' possible impact on the model.
  • Provides flexibility by accommodating all numeric features or a chosen subset.
  • Task-agnostic in nature; it is viable for both classification and regression tasks.
  • Can handle large datasets as its operation does not hinge on computationally heavy operations.

Limitations

  • Its application is limited to numerical variables and does not extend to categorical ones.
  • Only reveals the presence and distribution of outliers and does not provide insights into how these outliers might affect the model's predictive performance.
  • The assumption that data is unimodal and symmetric may not always hold true. In cases with non-normal distributions, the results can be misleading.

Required Inputs: dataset

Parameters:

Parameter Default Value
threshold 1.5
fig_width 800

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "dataset": "my_vm_dataset"
}
params = {
    "threshold": "my_vm_threshold",
    "fig_width": "my_vm_fig_width"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.data_validation.IQROutliersBarPlot", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ 2.2. Descriptive Statistics ('descriptive_statistics')
▶ Test: Descriptive Statistics ('validmind.data_validation.DescriptiveStatistics')

Descriptive Statistics

Performs a detailed descriptive statistical analysis of both numerical and categorical data within a model's dataset.

Purpose

The purpose of the Descriptive Statistics metric is to provide a comprehensive summary of both numerical and categorical data within a dataset. This involves statistics such as count, mean, standard deviation, minimum and maximum values for numerical data. For categorical data, it calculates the count, number of unique values, most common value and its frequency, and the proportion of the most frequent value relative to the total. The goal is to visualize the overall distribution of the variables in the dataset, aiding in understanding the model's behavior and predicting its performance.

Test Mechanism

The testing mechanism utilizes two in-built functions of pandas dataframes: describe() for numerical fields and value_counts() for categorical fields. The describe() function pulls out several summary statistics, while value_counts() accounts for unique values. The resulting data is formatted into two distinct tables, one for numerical and another for categorical variable summaries. These tables provide a clear summary of the main characteristics of the variables, which can be instrumental in assessing the model's performance.

Signs of High Risk

  • Skewed data or significant outliers can represent high risk. For numerical data, this may be reflected via a significant difference between the mean and median (50% percentile).
  • For categorical data, a lack of diversity (low count of unique values), or overdominance of a single category (high frequency of the top value) can indicate high risk.

Strengths

  • Provides a comprehensive summary of the dataset, shedding light on the distribution and characteristics of the variables under consideration.
  • It is a versatile and robust method, applicable to both numerical and categorical data.
  • Helps highlight crucial anomalies such as outliers, extreme skewness, or lack of diversity, which are vital in understanding model behavior during testing and validation.

Limitations

  • While this metric offers a high-level overview of the data, it may fail to detect subtle correlations or complex patterns.
  • Does not offer any insights on the relationship between variables.
  • Alone, descriptive statistics cannot be used to infer properties about future unseen data.
  • Should be used in conjunction with other statistical tests to provide a comprehensive understanding of the model's data.

Required Inputs: dataset

Parameters:

Parameter Default Value

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "dataset": "my_vm_dataset"
}
params = {}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.data_validation.DescriptiveStatistics", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ 2.3. Correlations and Interactions ('correlations')
▶ Test: Pearson Correlation Matrix ('validmind.data_validation.PearsonCorrelationMatrix')

Pearson Correlation Matrix

Evaluates linear dependency between numerical variables in a dataset via a Pearson Correlation coefficient heat map.

Purpose

This test is intended to evaluate the extent of linear dependency between all pairs of numerical variables in the given dataset. It provides the Pearson Correlation coefficient, which reveals any high correlations present. The purpose of doing this is to identify potential redundancy, as variables that are highly correlated can often be removed to reduce the dimensionality of the dataset without significantly impacting the model's performance.

Test Mechanism

This metric test generates a correlation matrix for all numerical variables in the dataset using the Pearson correlation formula. A heat map is subsequently created to visualize this matrix effectively. The color of each point on the heat map corresponds to the magnitude and direction (positive or negative) of the correlation, with a range from -1 (perfect negative correlation) to 1 (perfect positive correlation). Any correlation coefficients higher than 0.7 (in absolute terms) are indicated in white in the heat map, suggesting a high degree of correlation.

Signs of High Risk

  • A large number of variables in the dataset showing a high degree of correlation (coefficients approaching ±1). This indicates redundancy within the dataset, suggesting that some variables may not be contributing new information to the model.
  • Potential risk of overfitting.

Strengths

  • Detects and quantifies the linearity of relationships between variables, aiding in identifying redundant variables to simplify models and potentially improve performance.
  • The heatmap visualization provides an easy-to-understand overview of correlations, beneficial for users not comfortable with numerical matrices.

Limitations

  • Limited to detecting linear relationships, potentially missing non-linear relationships which impede opportunities for dimensionality reduction.
  • Measures only the degree of linear relationship, not the strength of one variable's effect on another.
  • The 0.7 correlation threshold is arbitrary and might exclude valid dependencies with lower coefficients.

Required Inputs: dataset

Parameters:

Parameter Default Value

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "dataset": "my_vm_dataset"
}
params = {}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.data_validation.PearsonCorrelationMatrix", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ Test: High Pearson Correlation ('validmind.data_validation.HighPearsonCorrelation')

High Pearson Correlation

Identifies highly correlated feature pairs in a dataset suggesting feature redundancy or multicollinearity.

Purpose

The High Pearson Correlation test measures the linear relationship between features in a dataset, with the main goal of identifying high correlations that might indicate feature redundancy or multicollinearity. Identification of such issues allows developers and risk management teams to properly deal with potential impacts on the machine learning model's performance and interpretability.

Test Mechanism

The test works by generating pairwise Pearson correlations for all features in the dataset, then sorting and eliminating duplicate and self-correlations. It assigns a Pass or Fail based on whether the absolute value of the correlation coefficient surpasses a pre-set threshold (defaulted at 0.3). It lastly returns the top n strongest correlations regardless of passing or failing status (where n is 10 by default but can be configured by passing the top_n_correlations parameter).

Signs of High Risk

  • A high risk indication would be the presence of correlation coefficients exceeding the threshold.
  • If the features share a strong linear relationship, this could lead to potential multicollinearity and model overfitting.
  • Redundancy of variables can undermine the interpretability of the model due to uncertainty over the authenticity of individual variable's predictive power.

Strengths

  • Provides a quick and simple means of identifying relationships between feature pairs.
  • Generates a transparent output that displays pairs of correlated variables, the Pearson correlation coefficient, and a Pass or Fail status for each.
  • Aids in early identification of potential multicollinearity issues that may disrupt model training.

Limitations

  • Can only delineate linear relationships, failing to shed light on nonlinear relationships or dependencies.
  • Sensitive to outliers where a few outliers could notably affect the correlation coefficient.
  • Limited to identifying redundancy only within feature pairs; may fail to spot more complex relationships among three or more variables.

Required Inputs: dataset

Parameters:

Parameter Default Value
max_threshold 0.3
top_n_correlations 10
feature_columns None

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "dataset": "my_vm_dataset"
}
params = {
    "max_threshold": "my_vm_max_threshold",
    "top_n_correlations": "my_vm_top_n_correlations",
    "feature_columns": "my_vm_feature_columns"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.data_validation.HighPearsonCorrelation", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ 2.4. Feature Selection and Engineering ('feature_selection')
Text Block: 'feature_selection'
▶ 3. Model Development ('model_development')
▶ 3.1. Model Training ('model_training')
▶ Test: Model Metadata ('validmind.model_validation.ModelMetadata')

Model Metadata

Compare metadata of different models and generate a summary table with the results.

Purpose: The purpose of this function is to compare the metadata of different models, including information about their architecture, framework, framework version, and programming language.

Test Mechanism: The function retrieves the metadata for each model using get_model_info, renames columns according to a predefined set of labels, and compiles this information into a summary table.

Signs of High Risk:

  • Inconsistent or missing metadata across models can indicate potential issues in model documentation or management.
  • Significant differences in framework versions or programming languages might pose challenges in model integration and deployment.

Strengths:

  • Provides a clear comparison of essential model metadata.
  • Standardizes metadata labels for easier interpretation and comparison.
  • Helps identify potential compatibility or consistency issues across models.

Limitations:

  • Assumes that the get_model_info function returns all necessary metadata fields.
  • Relies on the correctness and completeness of the metadata provided by each model.
  • Does not include detailed parameter information, focusing instead on high-level metadata.

Required Inputs: model

Parameters:

Parameter Default Value

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "model": "my_vm_model"
}
params = {}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.model_validation.ModelMetadata", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ Test: Dataset Split ('validmind.data_validation.DatasetSplit')

Dataset Split

Evaluates and visualizes the distribution proportions among training, testing, and validation datasets of an ML model.

Purpose

The DatasetSplit test is designed to evaluate and visualize the distribution of data among training, testing, and validation datasets, if available, within a given machine learning model. The main purpose is to assess whether the model's datasets are split appropriately, as an imbalanced split might affect the model's ability to learn from the data and generalize to unseen data.

Test Mechanism

The DatasetSplit test first calculates the total size of all available datasets in the model. Then, for each individual dataset, the methodology involves determining the size of the dataset and its proportion relative to the total size. The results are then conveniently summarized in a table that shows dataset names, sizes, and proportions. Absolute size and proportion of the total dataset size are displayed for each individual dataset.

Signs of High Risk

  • A very small training dataset, which may result in the model not learning enough from the data.
  • A very large training dataset and a small test dataset, which may lead to model overfitting and poor generalization to unseen data.
  • A small or non-existent validation dataset, which might complicate the model's performance assessment.

Strengths

  • The DatasetSplit test provides a clear, understandable visualization of dataset split proportions, which can highlight any potential imbalance in dataset splits quickly.
  • It covers a wide range of task types including classification, regression, and text-related tasks.
  • The metric is not tied to any specific data type and is applicable to tabular data, time series data, or text data.

Limitations

  • The DatasetSplit test does not provide any insight into the quality or diversity of the data within each split, just the size and proportion.
  • The test does not give any recommendations or adjustments for imbalanced datasets.
  • Potential lack of compatibility with more complex modes of data splitting (for example, stratified or time-based splits) could limit the applicability of this test.

Required Inputs: datasets

Parameters:

Parameter Default Value

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "datasets": "my_vm_datasets"
}
params = {}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.data_validation.DatasetSplit", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ Test: Population Stability Index ('validmind.model_validation.sklearn.PopulationStabilityIndex')

Population Stability Index

Assesses the Population Stability Index (PSI) to quantify the stability of an ML model's predictions across different datasets.

Purpose

The Population Stability Index (PSI) serves as a quantitative assessment for evaluating the stability of a machine learning model's output distributions when comparing two different datasets. Typically, these would be a development and a validation dataset or two datasets collected at different periods. The PSI provides a measurable indication of any significant shift in the model's performance over time or noticeable changes in the characteristics of the population the model is making predictions for.

Test Mechanism

The implementation of the PSI in this script involves calculating the PSI for each feature between the training and test datasets. Data from both datasets is sorted and placed into either a predetermined number of bins or quantiles. The boundaries for these bins are initially determined based on the distribution of the training data. The contents of each bin are calculated and their respective proportions determined. Subsequently, the PSI is derived for each bin through a logarithmic transformation of the ratio of the proportions of data for each feature in the training and test datasets. The PSI, along with the proportions of data in each bin for both datasets, are displayed in a summary table, a grouped bar chart, and a scatter plot.

Signs of High Risk

  • A high PSI value is a clear indicator of high risk. Such a value suggests a significant shift in the model predictions or severe changes in the characteristics of the underlying population.
  • This ultimately suggests that the model may not be performing as well as expected and that it may be less reliable for making future predictions.

Strengths

  • The PSI provides a quantitative measure of the stability of a model over time or across different samples, making it an invaluable tool for evaluating changes in a model's performance.
  • It allows for direct comparisons across different features based on the PSI value.
  • The calculation and interpretation of the PSI are straightforward, facilitating its use in model risk management.
  • The use of visual aids such as tables and charts further simplifies the comprehension and interpretation of the PSI.

Limitations

  • The PSI test does not account for the interdependence between features: features that are dependent on one another may show similar shifts in their distributions, which in turn may result in similar PSI values.
  • The PSI test does not inherently provide insights into why there are differences in distributions or why the PSI values may have changed.
  • The test may not handle features with significant outliers adequately.
  • Additionally, the PSI test is performed on model predictions, not on the underlying data distributions which can lead to misinterpretations. Any changes in PSI could be due to shifts in the model (model drift), changes in the relationships between features and the target variable (concept drift), or both. However, distinguishing between these causes is non-trivial.
  • For multiclass models the PSI is computed one-vs-rest (one table/plot per class), which requires per-class probabilities from the model's predict_proba. Models that cannot produce a full per-class probability matrix (e.g. metadata-only models, or predictions supplied as a single precomputed probability column) are skipped for the multiclass case.

Required Inputs: datasets, model

Parameters:

Parameter Default Value
num_bins 10
mode 'fixed'

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "datasets": "my_vm_datasets",
    "model": "my_vm_model"
}
params = {
    "num_bins": "my_vm_num_bins",
    "mode": "my_vm_mode"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.model_validation.sklearn.PopulationStabilityIndex", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ 3.2. Model Evaluation ('model_evaluation')
▶ Test: Confusion Matrix ('validmind.model_validation.sklearn.ConfusionMatrix')

Confusion Matrix

Evaluates and visually represents the classification ML model's predictive performance using a Confusion Matrix heatmap.

Purpose

The Confusion Matrix tester is designed to assess the performance of a classification Machine Learning model. This performance is evaluated based on how well the model is able to correctly classify True Positives, True Negatives, False Positives, and False Negatives - fundamental aspects of model accuracy.

Test Mechanism

The mechanism used involves taking the predicted results (y_test_predict) from the classification model and comparing them against the actual values (y_test_true). A confusion matrix is built using the unique labels extracted from y_test_true, employing scikit-learn's metrics. The matrix is then visually rendered with the help of Plotly's create_annotated_heatmap function. A heatmap is created which provides a two-dimensional graphical representation of the model's performance, showcasing distributions of True Positives (TP), True Negatives (TN), False Positives (FP), and False Negatives (FN).

Signs of High Risk

  • High numbers of False Positives (FP) and False Negatives (FN), depicting that the model is not effectively classifying the values.
  • Low numbers of True Positives (TP) and True Negatives (TN), implying that the model is struggling with correctly identifying class labels.

Strengths

  • It provides a simplified yet comprehensive visual snapshot of the classification model's predictive performance.
  • It distinctly brings out True Positives (TP), True Negatives (TN), False Positives (FP), and False Negatives (FN), thus making it easier to focus on potential areas of improvement.
  • The matrix is beneficial in dealing with multi-class classification problems as it can provide a simple view of complex model performances.
  • It aids in understanding the different types of errors that the model could potentially make, as it provides in-depth insights into Type-I and Type-II errors.

Limitations

  • In cases of unbalanced classes, the effectiveness of the confusion matrix might be lessened. It may wrongly interpret the accuracy of a model that is essentially just predicting the majority class.
  • It does not provide a single unified statistic that could evaluate the overall performance of the model. Different aspects of the model's performance are evaluated separately instead.
  • It mainly serves as a descriptive tool and does not offer the capability for statistical hypothesis testing.
  • Risks of misinterpretation exist because the matrix doesn't directly provide precision, recall, or F1-score data. These metrics have to be computed separately.
  • The threshold parameter only applies to binary classification (it splits a single positive-class probability into two classes). For multiclass targets the model's argmax class predictions are used and threshold is ignored.

Required Inputs: dataset, model

Parameters:

Parameter Default Value
threshold 0.5

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "dataset": "my_vm_dataset",
    "model": "my_vm_model"
}
params = {
    "threshold": "my_vm_threshold"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.model_validation.sklearn.ConfusionMatrix", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ Test: Classifier Performance In Sample ('validmind.model_validation.sklearn.ClassifierPerformance:in_sample')

Classifier Performance In Sample

Evaluates performance of binary or multiclass classification models using precision, recall, F1-Score, accuracy, and ROC AUC scores.

Purpose

The Classifier Performance test is designed to evaluate the performance of Machine Learning classification models. It accomplishes this by computing precision, recall, F1-Score, and accuracy, as well as the ROC AUC (Receiver operating characteristic - Area under the curve) scores, thereby providing a comprehensive analytic view of the models' performance. The test is adaptable, handling binary and multiclass models equally effectively.

Test Mechanism

The test produces a report that includes precision, recall, F1-Score, and accuracy, by leveraging the classification_report from scikit-learn's metrics module. For multiclass models, macro and weighted averages for these scores are also calculated. Additionally, the ROC AUC scores are calculated and included in the report using the multiclass_roc_auc_score function. The outcome of the test (report format) differs based on whether the model is binary or multiclass.

Signs of High Risk

  • Low values for precision, recall, F1-Score, accuracy, and ROC AUC, indicating poor performance.
  • Imbalance in precision and recall scores.
  • A low ROC AUC score, especially scores close to 0.5 or lower, suggesting a failing model.

Strengths

  • Versatile, capable of assessing both binary and multiclass models.
  • Utilizes a variety of commonly employed performance metrics, offering a comprehensive view of model performance.
  • The use of ROC-AUC as a metric is beneficial for evaluating unbalanced datasets.

Limitations

  • Assumes correctly identified labels for binary classification models.
  • Specifically designed for classification models and not suitable for regression models.
  • May provide limited insights if the test dataset does not represent real-world scenarios adequately.

Required Inputs: dataset, model

Parameters:

Parameter Default Value
average 'macro'

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "dataset": "my_vm_dataset",
    "model": "my_vm_model"
}
params = {
    "average": "my_vm_average"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.model_validation.sklearn.ClassifierPerformance:in_sample", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ Test: Classifier Performance Out Of Sample ('validmind.model_validation.sklearn.ClassifierPerformance:out_of_sample')

Classifier Performance Out Of Sample

Evaluates performance of binary or multiclass classification models using precision, recall, F1-Score, accuracy, and ROC AUC scores.

Purpose

The Classifier Performance test is designed to evaluate the performance of Machine Learning classification models. It accomplishes this by computing precision, recall, F1-Score, and accuracy, as well as the ROC AUC (Receiver operating characteristic - Area under the curve) scores, thereby providing a comprehensive analytic view of the models' performance. The test is adaptable, handling binary and multiclass models equally effectively.

Test Mechanism

The test produces a report that includes precision, recall, F1-Score, and accuracy, by leveraging the classification_report from scikit-learn's metrics module. For multiclass models, macro and weighted averages for these scores are also calculated. Additionally, the ROC AUC scores are calculated and included in the report using the multiclass_roc_auc_score function. The outcome of the test (report format) differs based on whether the model is binary or multiclass.

Signs of High Risk

  • Low values for precision, recall, F1-Score, accuracy, and ROC AUC, indicating poor performance.
  • Imbalance in precision and recall scores.
  • A low ROC AUC score, especially scores close to 0.5 or lower, suggesting a failing model.

Strengths

  • Versatile, capable of assessing both binary and multiclass models.
  • Utilizes a variety of commonly employed performance metrics, offering a comprehensive view of model performance.
  • The use of ROC-AUC as a metric is beneficial for evaluating unbalanced datasets.

Limitations

  • Assumes correctly identified labels for binary classification models.
  • Specifically designed for classification models and not suitable for regression models.
  • May provide limited insights if the test dataset does not represent real-world scenarios adequately.

Required Inputs: dataset, model

Parameters:

Parameter Default Value
average 'macro'

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "dataset": "my_vm_dataset",
    "model": "my_vm_model"
}
params = {
    "average": "my_vm_average"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.model_validation.sklearn.ClassifierPerformance:out_of_sample", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ Test: Precision Recall Curve ('validmind.model_validation.sklearn.PrecisionRecallCurve')

Precision Recall Curve

Evaluates the precision-recall trade-off for binary classification models and visualizes the Precision-Recall curve.

Purpose

The Precision Recall Curve metric is intended to evaluate the trade-off between precision and recall in classification models, particularly binary classification models. It assesses the model's capacity to produce accurate results (high precision), as well as its ability to capture a majority of all positive instances (high recall).

Test Mechanism

The test extracts ground truth labels and prediction probabilities from the model's test dataset. It applies the precision_recall_curve method from the sklearn metrics module to these extracted labels and predictions, which computes a precision-recall pair for each possible threshold. This calculation results in an array of precision and recall scores that can be plotted against each other to form the Precision-Recall Curve. This curve is then visually represented by using Plotly's scatter plot.

Signs of High Risk

  • A lower area under the Precision-Recall Curve signifies high risk.
  • This corresponds to a model yielding a high amount of false positives (low precision) and/or false negatives (low recall).
  • If the curve is closer to the bottom left of the plot, rather than being closer to the top right corner, it can be a sign of high risk.

Strengths

  • This metric aptly represents the balance between precision (minimizing false positives) and recall (minimizing false negatives), which is especially critical in scenarios where both values are significant.
  • Through the graphic representation, it enables an intuitive understanding of the model's performance across different threshold levels.

Limitations

  • For multiclass models the curve is computed one-vs-rest (one curve per class plus a micro-average), which requires per-class probabilities from the model's predict_proba. Models that cannot produce a full per-class probability matrix (e.g. Foundation/metadata-only models, or predictions supplied as a single precomputed probability column) are skipped for the multiclass case.
  • It may not fully represent the overall accuracy of the model if the cost of false positives and false negatives are extremely different, or if the dataset is heavily imbalanced.

Required Inputs: model, dataset

Parameters:

Parameter Default Value

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "model": "my_vm_model",
    "dataset": "my_vm_dataset"
}
params = {}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.model_validation.sklearn.PrecisionRecallCurve", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ Test: ROC Curve ('validmind.model_validation.sklearn.ROCCurve')

ROC Curve

Evaluates classification model performance by generating and plotting the Receiver Operating Characteristic (ROC) curve and calculating the Area Under Curve (AUC) score, for both binary and multiclass models.

Purpose

The Receiver Operating Characteristic (ROC) curve evaluates the performance of classification models. This curve illustrates the balance between the True Positive Rate (TPR) and False Positive Rate (FPR) across various threshold levels. In combination with the Area Under the Curve (AUC), the ROC curve measures the model's discrimination ability between classes. For binary problems (e.g., default vs non-default) a single curve is drawn for the positive class. For multiclass problems the curve is computed one-vs-rest — one curve and AUC per class, plus a micro-average across all classes — so the model's discrimination ability can be assessed for every class. Ideally, a higher AUC score signifies superior model performance in accurately distinguishing between classes.

Test Mechanism

This test selects the target model and dataset and determines the number of classes from the true labels. For binary targets it computes the predicted probabilities for the positive class and, together with the true outcomes, generates and plots a single ROC curve. For multiclass targets it obtains the full per-class probability matrix from the model and plots a one-vs-rest curve for each class along with a micro-average curve. In both cases a line signifying randomness (AUC of 0.5) is included, and the AUC score(s) are computed as a numerical estimation of performance. If any Infinite values are detected in the ROC threshold, these are effectively eliminated. The resulting ROC curves, AUC scores, and thresholds are consequently saved for future reference.

Signs of High Risk

  • A high risk is potentially linked to the model's performance if the AUC score drops below or nears 0.5.
  • Another warning sign would be the ROC curve lying closer to the line of randomness, indicating no discriminative ability.
  • For the model to be deemed competent at its classification tasks, it is crucial that the AUC score is significantly above 0.5.

Strengths

  • The ROC Curve offers an inclusive visual depiction of a model's discriminative power throughout all conceivable classification thresholds, unlike other metrics that solely disclose model performance at one fixed threshold.
  • Despite the proportions of the dataset, the AUC Score, which represents the entire ROC curve as a single data point, continues to be consistent, proving to be the ideal choice for such situations.

Limitations

  • For multiclass models the curve is computed one-vs-rest (one curve per class plus a micro-average), which requires per-class probabilities from the model's predict_proba. Models that cannot produce a full per-class probability matrix (e.g. metadata-only models, or predictions supplied as a single precomputed probability column) are skipped for the multiclass case.
  • Furthermore, its performance might be subpar with models that output probabilities highly skewed towards 0 or 1.
  • At the extreme, the ROC curve could reflect high performance even when the majority of classifications are incorrect, provided that the model's ranking format is retained. This phenomenon is commonly termed the "Class Imbalance Problem".

Required Inputs: model, dataset

Parameters:

Parameter Default Value

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "model": "my_vm_model",
    "dataset": "my_vm_dataset"
}
params = {}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.model_validation.sklearn.ROCCurve", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
Text Block: 'model_validation_tests_text'
▶ Test: Training Test Degradation ('validmind.model_validation.sklearn.TrainingTestDegradation')

Training Test Degradation

Tests if model performance degradation between training and test datasets exceeds a predefined threshold.

Purpose

The TrainingTestDegradation class serves as a test to verify that the degradation in performance between the training and test datasets does not exceed a predefined threshold. This test measures the model's ability to generalize from its training data to unseen test data, assessing key classification metrics such as precision, recall, and f1 score to verify the model's robustness and reliability.

Test Mechanism

The code applies several predefined metrics, including precision, recall, and f1 scores, to the model's predictions for both the training and test datasets. It calculates the degradation as the difference between the training score and test score divided by the training score. The test is considered successful if the degradation for each metric is less than the preset maximum threshold (default: 0.10). The results are summarized in a table showing each metric's train score, test score, degradation percentage, and pass/fail status.

Signs of High Risk

  • A degradation percentage that exceeds the maximum allowed threshold of 10% for any of the evaluated metrics.
  • A high difference or gap between the metric scores on the training and the test datasets.
  • The 'Pass/Fail' column displaying 'Fail' for any of the evaluated metrics.

Strengths

  • Provides a quantitative measure of the model's ability to generalize to unseen data, which is key for predicting its practical real-world performance.
  • By evaluating multiple metrics, it takes into account different facets of model performance and enables a more holistic evaluation.
  • The use of a variable predefined threshold allows the flexibility to adjust the acceptability criteria for different scenarios.

Limitations

  • The test compares raw performance on training and test data but does not factor in the nature of the data. Areas with less representation in the training set might still perform poorly on unseen data.
  • It requires good coverage and balance in the test and training datasets to produce reliable results, which may not always be available.
  • The test is currently only designed for classification tasks.

Required Inputs: datasets, model

Parameters:

Parameter Default Value
max_threshold 0.1

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "datasets": "my_vm_datasets",
    "model": "my_vm_model"
}
params = {
    "max_threshold": "my_vm_max_threshold"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.model_validation.sklearn.TrainingTestDegradation", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ Test: Minimum Accuracy ('validmind.model_validation.sklearn.MinimumAccuracy')

Minimum Accuracy

Checks if the model's prediction accuracy meets or surpasses a specified threshold.

Purpose

The Minimum Accuracy test’s objective is to verify whether the model's prediction accuracy on a specific dataset meets or surpasses a predetermined minimum threshold. Accuracy, which is simply the ratio of correct predictions to total predictions, is a key metric for evaluating the model's performance. Considering binary as well as multiclass classifications, accurate labeling becomes indispensable.

Test Mechanism

The test mechanism involves contrasting the model's accuracy score with a preset minimum threshold value, with the default being 0.7. The accuracy score is computed utilizing sklearn’s accuracy_score method, where the true labels y_true and predicted labels class_pred are compared. If the accuracy score is above the threshold, the test receives a passing mark. The test returns the result along with the accuracy score and threshold used for the test.

Signs of High Risk

  • Model fails to achieve or surpass the predefined score threshold.
  • Persistent scores below the threshold, indicating a high risk of inaccurate predictions.

Strengths

  • Simplicity, presenting a straightforward measure of holistic model performance across all classes.
  • Particularly advantageous when classes are balanced.
  • Versatile, as it can be implemented on both binary and multiclass classification tasks.

Limitations

  • Misleading accuracy scores when classes in the dataset are highly imbalanced.
  • Favoritism towards the majority class, giving an inaccurate perception of model performance.
  • Inability to measure the model's precision, recall, or capacity to manage false positives or false negatives.
  • Focused on overall correctness and may not be sufficient for all types of model analytics.

Required Inputs: dataset, model

Parameters:

Parameter Default Value
min_threshold 0.7

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "dataset": "my_vm_dataset",
    "model": "my_vm_model"
}
params = {
    "min_threshold": "my_vm_min_threshold"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.model_validation.sklearn.MinimumAccuracy", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ Test: Minimum F1 Score ('validmind.model_validation.sklearn.MinimumF1Score')

Minimum F1 Score

Assesses if the model's F1 score on the validation set meets a predefined minimum threshold, ensuring balanced performance between precision and recall.

Purpose

The main objective of this test is to ensure that the F1 score, a balanced measure of precision and recall, of the model meets or surpasses a predefined threshold on the validation dataset. The F1 score is highly useful for gauging model performance in classification tasks, especially in cases where the distribution of positive and negative classes is skewed.

Test Mechanism

The F1 score for the validation dataset is computed through scikit-learn's metrics in Python. The scoring mechanism differs based on the classification problem: for multi-class problems, macro averaging is used, and for binary classification, the built-in f1_score calculation is used. The obtained F1 score is then assessed against the predefined minimum F1 score that is expected from the model.

Signs of High Risk

  • If a model returns an F1 score that is less than the established threshold, it is regarded as high risk.
  • A low F1 score might suggest that the model is not finding an optimal balance between precision and recall, failing to effectively identify positive classes while minimizing false positives.

Strengths

  • Provides a balanced measure of a model's performance by accounting for both false positives and false negatives.
  • Particularly advantageous in scenarios with imbalanced class distribution, where accuracy can be misleading.
  • Flexibility in setting the threshold value allows tailored minimum acceptable performance standards.

Limitations

  • May not be suitable for all types of models and machine learning tasks.
  • The F1 score assumes an equal cost for false positives and false negatives, which may not be true in some real-world scenarios.
  • Practitioners might need to rely on other metrics such as precision, recall, or the ROC-AUC score that align more closely with specific requirements.

Required Inputs: dataset, model

Parameters:

Parameter Default Value
min_threshold 0.5

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "dataset": "my_vm_dataset",
    "model": "my_vm_model"
}
params = {
    "min_threshold": "my_vm_min_threshold"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.model_validation.sklearn.MinimumF1Score", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ Test: Minimum ROCAUC Score ('validmind.model_validation.sklearn.MinimumROCAUCScore')

Minimum ROCAUC Score

Validates model by checking if the ROC AUC score meets or surpasses a specified threshold.

Purpose

The Minimum ROC AUC Score test is used to determine the model's performance by ensuring that the Receiver Operating Characteristic Area Under the Curve (ROC AUC) score on the validation dataset meets or exceeds a predefined threshold. The ROC AUC score indicates how well the model can distinguish between different classes, making it a crucial measure in binary and multiclass classification tasks.

Test Mechanism

This test implementation calculates the multiclass ROC AUC score on the true target values and the model's predictions. The test converts the multi-class target variables into binary format using LabelBinarizer before computing the score. If this ROC AUC score is higher than the predefined threshold (defaulted to 0.5), the test passes; otherwise, it fails. The results, including the ROC AUC score, the threshold, and whether the test passed or failed, are then stored in a ThresholdTestResult object.

Signs of High Risk

  • A high risk or failure in the model's performance as related to this metric would be represented by a low ROC AUC score, specifically any score lower than the predefined minimum threshold. This suggests that the model is struggling to distinguish between different classes effectively.

Strengths

  • The test considers both the true positive rate and false positive rate, providing a comprehensive performance measure.
  • ROC AUC score is threshold-independent meaning it measures the model's quality across various classification thresholds.
  • Works robustly with binary as well as multi-class classification problems.

Limitations

  • ROC AUC may not be useful if the class distribution is highly imbalanced; it could perform well in terms of AUC but still fail to predict the minority class.
  • The test does not provide insight into what specific aspects of the model are causing poor performance if the ROC AUC score is unsatisfactory.
  • The use of macro average for multiclass ROC AUC score implies equal weightage to each class, which might not be appropriate if the classes are imbalanced.

Required Inputs: dataset, model

Parameters:

Parameter Default Value
min_threshold 0.5

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "dataset": "my_vm_dataset",
    "model": "my_vm_model"
}
params = {
    "min_threshold": "my_vm_min_threshold"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.model_validation.sklearn.MinimumROCAUCScore", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ 3.3. Model Explainability and Interpretability ('explainability')
▶ Test: Permutation Feature Importance ('validmind.model_validation.sklearn.PermutationFeatureImportance')

Permutation Feature Importance

Assesses the significance of each feature in a model by evaluating the impact on model performance when feature values are randomly rearranged.

Purpose

The Permutation Feature Importance (PFI) metric aims to assess the importance of each feature used by the Machine Learning model. The significance is measured by evaluating the decrease in the model's performance when the feature's values are randomly arranged.

Test Mechanism

PFI is calculated via the permutation_importance method from the sklearn.inspection module. This method shuffles the columns of the feature dataset and measures the impact on the model's performance. A significant decrease in performance after permutating a feature's values deems the feature as important. On the other hand, if performance remains the same, the feature is likely not important. The output of the PFI metric is a figure illustrating the importance of each feature.

Signs of High Risk

  • The model heavily relies on a feature with highly variable or easily permutable values, indicating instability.
  • A feature deemed unimportant by the model but expected to have a significant effect on the outcome based on domain knowledge is not influencing the model's predictions.

Strengths

  • Provides insights into the importance of different features and may reveal underlying data structure.
  • Can indicate overfitting if a particular feature or set of features overly impacts the model's predictions.
  • Model-agnostic and can be used with any classifier that provides a measure of prediction accuracy before and after feature permutation.

Limitations

  • Does not imply causality; it only presents the amount of information that a feature provides for the prediction task.
  • Does not account for interactions between features. If features are correlated, the permutation importance may allocate importance to one and not the other.
  • Cannot interact with certain libraries like statsmodels, pytorch, catboost, etc., thus limiting its applicability.

Required Inputs: model, dataset

Parameters:

Parameter Default Value
fontsize None
figure_height None

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "model": "my_vm_model",
    "dataset": "my_vm_dataset"
}
params = {
    "fontsize": "my_vm_fontsize",
    "figure_height": "my_vm_figure_height"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.model_validation.sklearn.PermutationFeatureImportance", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
Text Block: 'validmind.model_validation.sklearn.SHAPGlobalImportance_global_importance_text'
▶ Test: SHAP Global Importance ('validmind.model_validation.sklearn.SHAPGlobalImportance')

SHAP Global Importance

Evaluates and visualizes global feature importance using SHAP values for model explanation and risk identification.

Purpose

The SHAP (SHapley Additive exPlanations) Global Importance metric aims to elucidate model outcomes by attributing them to the contributing features. It assigns a quantifiable global importance to each feature via their respective absolute Shapley values, thereby making it suitable for tasks like classification (both binary and multiclass). This metric forms an essential part of model risk management.

Test Mechanism

The exam begins with the selection of a suitable explainer which aligns with the model's type. For tree-based models like XGBClassifier, RandomForestClassifier, CatBoostClassifier, TreeExplainer is used whereas for linear models like LogisticRegression, XGBRegressor, LinearRegression, it is the LinearExplainer. Once the explainer calculates the Shapley values, these values are visualized using two specific graphical representations:

  1. Mean Importance Plot: This graph portrays the significance of individual features based on their absolute Shapley values. It calculates the average of these absolute Shapley values across all instances to highlight the global importance of features.

  2. Summary Plot: This visual tool combines the feature importance with their effects. Every dot on this chart represents a Shapley value for a certain feature in a specific case. The vertical axis is denoted by the feature whereas the horizontal one corresponds to the Shapley value. A color gradient indicates the value of the feature, gradually changing from low to high. Features are systematically organized in accordance with their importance.

Signs of High Risk

  • Overemphasis on certain features in SHAP importance plots, thus hinting at the possibility of model overfitting
  • Anomalies such as unexpected or illogical features showing high importance, which might suggest that the model's decisions are rooted in incorrect or undesirable reasoning
  • A SHAP summary plot filled with high variability or scattered data points, indicating a cause for concern

Strengths

  • SHAP does more than just illustrating global feature significance, it offers a detailed perspective on how different features shape the model's decision-making logic for each instance.
  • It provides clear insights into model behavior.

Limitations

  • High-dimensional data can convolute interpretations.
  • Associating importance with tangible real-world impact still involves a certain degree of subjectivity.

Required Inputs: model, dataset

Parameters:

Parameter Default Value
kernel_explainer_samples 10
tree_or_linear_explainer_samples 200
class_of_interest None

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "model": "my_vm_model",
    "dataset": "my_vm_dataset"
}
params = {
    "kernel_explainer_samples": "my_vm_kernel_explainer_samples",
    "tree_or_linear_explainer_samples": "my_vm_tree_or_linear_explainer_samples",
    "class_of_interest": "my_vm_class_of_interest"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.model_validation.sklearn.SHAPGlobalImportance", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ 3.4. Model Diagnosis ('model_diagnosis')
Text Block: 'model_weak_spots_description'
▶ Test: Weakspots Diagnosis ('validmind.model_validation.sklearn.WeakspotsDiagnosis')

Weakspots Diagnosis

Identifies and visualizes weak spots in a machine learning model's performance across various sections of the feature space.

Purpose

The weak spots test is applied to evaluate the performance of a machine learning model within specific regions of its feature space. This test slices the feature space into various sections, evaluating the model's outputs within each section against specific performance metrics (e.g., accuracy, precision, recall, and F1 scores). The ultimate aim is to identify areas where the model's performance falls below the set thresholds, thereby exposing its possible weaknesses and limitations.

Test Mechanism

The test mechanism adopts an approach of dividing the feature space of the training dataset into numerous bins. The model's performance metrics (accuracy, precision, recall, F1 scores) are then computed for each bin on both the training and test datasets. A "weak spot" is identified if any of the performance metrics fall below a predetermined threshold for a particular bin on the test dataset. The test results are visually plotted as bar charts for each performance metric, indicating the bins which fail to meet the established threshold.

Signs of High Risk

  • Any performance metric of the model dropping below the set thresholds.
  • Significant disparity in performance between the training and test datasets within a bin could be an indication of overfitting.
  • Regions or slices with consistently low performance metrics. Such instances could mean that the model struggles to handle specific types of input data adequately, resulting in potentially inaccurate predictions.

Strengths

  • The test helps pinpoint precise regions of the feature space where the model's performance is below par, allowing for more targeted improvements to the model.
  • The graphical presentation of the performance metrics offers an intuitive way to understand the model's performance across different feature areas.
  • The test exhibits flexibility, letting users set different thresholds for various performance metrics according to the specific requirements of the application.

Limitations

  • The binning system utilized for the feature space in the test could over-simplify the model's behavior within each bin. The granularity of this slicing depends on the chosen 'bins' parameter and can sometimes be arbitrary.
  • The effectiveness of this test largely hinges on the selection of thresholds for the performance metrics, which may not hold universally applicable and could be subjected to the specifications of a particular model and application.
  • The test is unable to handle datasets with a text column, limiting its application to numerical or categorical data types only.
  • Despite its usefulness in highlighting problematic regions, the test does not offer direct suggestions for model improvement.

Required Inputs: datasets, model

Parameters:

Parameter Default Value
features_columns None
metrics None
thresholds None

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "datasets": "my_vm_datasets",
    "model": "my_vm_model"
}
params = {
    "features_columns": "my_vm_features_columns",
    "metrics": "my_vm_metrics",
    "thresholds": "my_vm_thresholds"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.model_validation.sklearn.WeakspotsDiagnosis", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
Text Block: 'model_overfit_regions_description'
▶ Test: Overfit Diagnosis ('validmind.model_validation.sklearn.OverfitDiagnosis')

Overfit Diagnosis

Assesses potential overfitting in a model's predictions, identifying regions where performance between training and testing sets deviates significantly.

Purpose

The Overfit Diagnosis test aims to identify areas in a model's predictions where there is a significant difference in performance between the training and testing sets. This test helps to pinpoint specific regions or feature segments where the model may be overfitting.

Test Mechanism

This test compares the model's performance on training versus test data, grouped by feature columns. It calculates the difference between the training and test performance for each group and identifies regions where this difference exceeds a specified threshold:

  • The test works for both classification and regression models.
  • It defaults to using the AUC metric for classification models and the MSE metric for regression models.
  • The threshold for identifying overfitting regions is set to 0.04 by default.
  • The test calculates the performance metrics for each feature segment and plots regions where the performance gap exceeds the threshold.

Signs of High Risk

  • Significant gaps between training and test performance metrics for specific feature segments.
  • Multiple regions with performance gaps exceeding the defined threshold.
  • Higher than expected differences in predicted versus actual values in the test set compared to the training set.

Strengths

  • Identifies specific areas where overfitting occurs.
  • Supports multiple performance metrics, providing flexibility.
  • Applicable to both classification and regression models.
  • Visualization of overfitting segments aids in better understanding and debugging.

Limitations

  • The default threshold may not be suitable for all use cases and requires tuning.
  • May not capture more subtle forms of overfitting that do not exceed the threshold.
  • Assumes that the binning of features adequately represents the data segments.

Required Inputs: model, datasets

Parameters:

Parameter Default Value
metric None
cut_off_threshold 0.04

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "model": "my_vm_model",
    "datasets": "my_vm_datasets"
}
params = {
    "metric": "my_vm_metric",
    "cut_off_threshold": "my_vm_cut_off_threshold"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.model_validation.sklearn.OverfitDiagnosis", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
Text Block: 'model_robustness_description'
▶ Test: Robustness Diagnosis ('validmind.model_validation.sklearn.RobustnessDiagnosis')

Robustness Diagnosis

Assesses the robustness of a machine learning model by evaluating performance decay under noisy conditions.

Purpose

The Robustness Diagnosis test aims to evaluate the resilience of a machine learning model when subjected to perturbations or noise in its input data. This is essential for understanding the model's ability to handle real-world scenarios where data may be imperfect or corrupted.

Test Mechanism

This test introduces Gaussian noise to the numeric input features of the datasets at varying scales of standard deviation. The performance of the model is then measured using a specified metric. The process includes:

  • Adding Gaussian noise to numerical input features based on scaling factors.
  • Evaluating the model's performance on the perturbed data using metrics like AUC for classification tasks and MSE for regression tasks.
  • Aggregating and plotting the results to visualize performance decay relative to perturbation size.

Signs of High Risk

  • A significant drop in performance metrics with minimal noise.
  • Performance decay values exceeding the specified threshold.
  • Consistent failure to meet performance standards across multiple perturbation scales.

Strengths

  • Provides insights into the model's robustness against noisy or corrupted data.
  • Utilizes a variety of performance metrics suitable for both classification and regression tasks.
  • Visualization helps in understanding the extent of performance degradation.

Limitations

  • Gaussian noise might not adequately represent all types of real-world data perturbations.
  • Performance thresholds are somewhat arbitrary and might need tuning.
  • The test may not account for more complex or unstructured noise patterns that could affect model robustness.

Required Inputs: datasets, model

Parameters:

Parameter Default Value
metric None
scaling_factor_std_dev_list [0.1, 0.2, 0.3, 0.4, 0.5]
performance_decay_threshold 0.05

How to Run:

Code:

        
import validmind as vm

# inputs dictionary maps your inputs to the expected input names
# keys are the expected input names and values are the actual inputs
# values may be string input_ids or the actual VMDataset or VMModel objects
inputs = {
    "datasets": "my_vm_datasets",
    "model": "my_vm_model"
}
params = {
    "metric": "my_vm_metric",
    "scaling_factor_std_dev_list": "my_vm_scaling_factor_std_dev_list",
    "performance_decay_threshold": "my_vm_performance_decay_threshold"
}

# to run and view the result of this test, run the following code:
result = vm.tests.run_test(
  "validmind.model_validation.sklearn.RobustnessDiagnosis", inputs=inputs, params=params
)

# To see the result of the test, ensure that you have called `vm.init()` and then run:
result.log()
    
▶ 4. Monitoring and Governance ('monitoring_governance')
▶ 4.1. Monitoring Plan ('monitoring_plan')
Text Block: 'monitoring_plan'
▶ 4.2. Monitoring Implementation ('monitoring_implementation')
Text Block: 'monitoring_implementation'
▶ 4.3. Governance Plan ('governance_plan')
Text Block: 'governance_plan'

View documentation in the ValidMind Platform

Next, let's head to the ValidMind Platform to see the template in action:

  1. In a browser, log in to ValidMind.

  2. In the left sidebar, navigate to Inventory and select the model you registered for this "ValidMind for development" series of notebooks.

  3. Click Development under Documents for your model and note how the structure of the documentation matches our preview above.

Explore available tests

Next, let's explore the list of all available tests in the ValidMind Library with the vm.tests.list_tests() function — we'll learn how to run tests shortly.

You can see that the documentation template for this model has references to some of the test IDs used to run tests listed below:

vm.tests.list_tests()
ID Name Description Has Figure Has Table Required Inputs Params Tags Tasks
validmind.data_validation.ACFandPACFPlot AC Fand PACF Plot Analyzes time series data using Autocorrelation Function (ACF) and Partial Autocorrelation Function (PACF) plots to... True False ['dataset'] {} ['time_series_data', 'forecasting', 'statistical_test', 'visualization'] ['regression']
validmind.data_validation.ADF ADF Assesses the stationarity of a time series dataset using the Augmented Dickey-Fuller (ADF) test.... False True ['dataset'] {} ['time_series_data', 'statsmodels', 'forecasting', 'statistical_test', 'stationarity'] ['regression']
validmind.data_validation.AutoAR Auto AR Automatically identifies the optimal Autoregressive (AR) order for a time series using BIC and AIC criteria.... False True ['dataset'] {'max_ar_order': {'type': 'int', 'default': 3}} ['time_series_data', 'statsmodels', 'forecasting', 'statistical_test'] ['regression']
validmind.data_validation.AutoMA Auto MA Automatically selects the optimal Moving Average (MA) order for each variable in a time series dataset based on... False True ['dataset'] {'max_ma_order': {'type': 'int', 'default': 3}} ['time_series_data', 'statsmodels', 'forecasting', 'statistical_test'] ['regression']
validmind.data_validation.AutoStationarity Auto Stationarity Automates Augmented Dickey-Fuller test to assess stationarity across multiple time series in a DataFrame.... False True ['dataset'] {'max_order': {'type': 'int', 'default': 5}, 'threshold': {'type': 'float', 'default': 0.05}} ['time_series_data', 'statsmodels', 'forecasting', 'statistical_test'] ['regression']
validmind.data_validation.BivariateScatterPlots Bivariate Scatter Plots Generates bivariate scatterplots to visually inspect relationships between pairs of numerical predictor variables... True False ['dataset'] {} ['tabular_data', 'numerical_data', 'visualization'] ['classification']
validmind.data_validation.BoxPierce Box Pierce Detects autocorrelation in time-series data through the Box-Pierce test to validate model performance.... False True ['dataset'] {} ['time_series_data', 'forecasting', 'statistical_test', 'statsmodels'] ['regression']
validmind.data_validation.ChiSquaredFeaturesTable Chi Squared Features Table Assesses the statistical association between categorical features and a target variable using the Chi-Squared test.... False True ['dataset'] {'p_threshold': {'type': '_empty', 'default': 0.05}} ['tabular_data', 'categorical_data', 'statistical_test'] ['classification']
validmind.data_validation.ClassImbalance Class Imbalance Evaluates and quantifies class distribution imbalance in a dataset used by a machine learning model.... True True ['dataset'] {'min_percent_threshold': {'type': 'int', 'default': 10}} ['tabular_data', 'binary_classification', 'multiclass_classification', 'data_quality'] ['classification']
validmind.data_validation.DatasetDescription Dataset Description Provides comprehensive analysis and statistical summaries of each column in a machine learning model's dataset.... False True ['dataset'] {} ['tabular_data', 'time_series_data', 'text_data'] ['classification', 'regression', 'text_classification', 'text_summarization']
validmind.data_validation.DatasetSplit Dataset Split Evaluates and visualizes the distribution proportions among training, testing, and validation datasets of an ML... False True ['datasets'] {} ['tabular_data', 'time_series_data', 'text_data'] ['classification', 'regression', 'text_classification', 'text_summarization']
validmind.data_validation.DescriptiveStatistics Descriptive Statistics Performs a detailed descriptive statistical analysis of both numerical and categorical data within a model's... False True ['dataset'] {} ['tabular_data', 'time_series_data', 'data_quality'] ['classification', 'regression']
validmind.data_validation.DickeyFullerGLS Dickey Fuller GLS Assesses stationarity in time series data using the Dickey-Fuller GLS test to determine the order of integration.... False True ['dataset'] {} ['time_series_data', 'forecasting', 'unit_root_test'] ['regression']
validmind.data_validation.Duplicates Duplicates Tests dataset for duplicate entries, ensuring model reliability via data quality verification.... False True ['dataset'] {'min_threshold': {'type': '_empty', 'default': 1}} ['tabular_data', 'data_quality', 'text_data'] ['classification', 'regression']
validmind.data_validation.EngleGrangerCoint Engle Granger Coint Assesses the degree of co-movement between pairs of time series data using the Engle-Granger cointegration test.... False True ['dataset'] {'threshold': {'type': 'float', 'default': 0.05}} ['time_series_data', 'statistical_test', 'forecasting'] ['regression']
validmind.data_validation.FeatureTargetCorrelationPlot Feature Target Correlation Plot Visualizes the correlation between input features and the model's target output in a color-coded horizontal bar... True False ['dataset'] {'fig_height': {'type': '_empty', 'default': 600}} ['tabular_data', 'visualization', 'correlation'] ['classification', 'regression']
validmind.data_validation.HighCardinality High Cardinality Assesses the number of unique values in categorical columns to detect high cardinality and potential overfitting.... False True ['dataset'] {'num_threshold': {'type': 'int', 'default': 100}, 'percent_threshold': {'type': 'float', 'default': 0.1}, 'threshold_type': {'type': 'str', 'default': 'percent'}} ['tabular_data', 'data_quality', 'categorical_data'] ['classification', 'regression']
validmind.data_validation.HighPearsonCorrelation High Pearson Correlation Identifies highly correlated feature pairs in a dataset suggesting feature redundancy or multicollinearity.... False True ['dataset'] {'max_threshold': {'type': 'float', 'default': 0.3}, 'top_n_correlations': {'type': 'int', 'default': 10}, 'feature_columns': {'type': 'list', 'default': None}} ['tabular_data', 'data_quality', 'correlation'] ['classification', 'regression']
validmind.data_validation.IQROutliersBarPlot IQR Outliers Bar Plot Visualizes outlier distribution across percentiles in numerical data using the Interquartile Range (IQR) method.... True False ['dataset'] {'threshold': {'type': 'float', 'default': 1.5}, 'fig_width': {'type': 'int', 'default': 800}} ['tabular_data', 'visualization', 'numerical_data'] ['classification', 'regression']
validmind.data_validation.IQROutliersTable IQR Outliers Table Determines and summarizes outliers in numerical features using the Interquartile Range method.... False True ['dataset'] {'threshold': {'type': 'float', 'default': 1.5}} ['tabular_data', 'numerical_data'] ['classification', 'regression']
validmind.data_validation.IsolationForestOutliers Isolation Forest Outliers Detects outliers in a dataset using the Isolation Forest algorithm and visualizes results through scatter plots.... True False ['dataset'] {'random_state': {'type': 'int', 'default': 0}, 'contamination': {'type': 'float', 'default': 0.1}, 'feature_columns': {'type': 'list', 'default': None}} ['tabular_data', 'anomaly_detection'] ['classification']
validmind.data_validation.JarqueBera Jarque Bera Assesses normality of dataset features in an ML model using the Jarque-Bera test.... False True ['dataset'] {} ['tabular_data', 'data_distribution', 'statistical_test', 'statsmodels'] ['classification', 'regression']
validmind.data_validation.KPSS KPSS Assesses the stationarity of time-series data in a machine learning model using the KPSS unit root test.... False True ['dataset'] {} ['time_series_data', 'stationarity', 'unit_root_test', 'statsmodels'] ['data_validation']
validmind.data_validation.LJungBox L Jung Box Assesses autocorrelations in dataset features by performing a Ljung-Box test on each feature.... False True ['dataset'] {} ['time_series_data', 'forecasting', 'statistical_test', 'statsmodels'] ['regression']
validmind.data_validation.LaggedCorrelationHeatmap Lagged Correlation Heatmap Assesses and visualizes correlation between target variable and lagged independent variables in a time-series... True False ['dataset'] {'num_lags': {'type': 'int', 'default': 10}} ['time_series_data', 'visualization'] ['regression']
validmind.data_validation.MissingValues Missing Values Evaluates dataset quality by ensuring missing value percentage across all features does not exceed a set threshold.... False True ['dataset'] {'min_percentage_threshold': {'type': 'float', 'default': 1.0}} ['tabular_data', 'data_quality'] ['classification', 'regression']
validmind.data_validation.MissingValuesBarPlot Missing Values Bar Plot Assesses the percentage and distribution of missing values in the dataset via a bar plot, with emphasis on... True False ['dataset'] {'threshold': {'type': 'int', 'default': 80}, 'fig_height': {'type': 'int', 'default': 600}} ['tabular_data', 'data_quality', 'visualization'] ['classification', 'regression']
validmind.data_validation.MutualInformation Mutual Information Calculates mutual information scores between features and target variable to evaluate feature relevance.... True False ['dataset'] {'min_threshold': {'type': 'float', 'default': 0.01}, 'task': {'type': 'str', 'default': 'classification'}} ['feature_selection', 'data_analysis'] ['classification', 'regression']
validmind.data_validation.PearsonCorrelationMatrix Pearson Correlation Matrix Evaluates linear dependency between numerical variables in a dataset via a Pearson Correlation coefficient heat map.... True False ['dataset'] {} ['tabular_data', 'numerical_data', 'correlation'] ['classification', 'regression']
validmind.data_validation.PhillipsPerronArch Phillips Perron Arch Assesses the stationarity of time series data in each feature of the ML model using the Phillips-Perron test.... False True ['dataset'] {} ['time_series_data', 'forecasting', 'statistical_test', 'unit_root_test'] ['regression']
validmind.data_validation.ProtectedClassesDescription Protected Classes Description Visualizes the distribution of protected classes in the dataset relative to the target variable... True True ['dataset'] {'protected_classes': {'type': '_empty', 'default': None}} ['bias_and_fairness', 'descriptive_statistics'] ['classification', 'regression']
validmind.data_validation.RollingStatsPlot Rolling Stats Plot Evaluates the stationarity of time series data by plotting its rolling mean and standard deviation over a specified... True False ['dataset'] {'window_size': {'type': 'int', 'default': 12}} ['time_series_data', 'visualization', 'stationarity'] ['regression']
validmind.data_validation.RunsTest Runs Test Executes Runs Test on ML model to detect non-random patterns in output data sequence.... False True ['dataset'] {} ['tabular_data', 'statistical_test', 'statsmodels'] ['classification', 'regression']
validmind.data_validation.ScatterPlot Scatter Plot Assesses visual relationships, patterns, and outliers among features in a dataset through scatter plot matrices.... True False ['dataset'] {} ['tabular_data', 'visualization'] ['classification', 'regression']
validmind.data_validation.ScoreBandDefaultRates Score Band Default Rates Analyzes default rates and population distribution across credit score bands.... False True ['dataset', 'model'] {'score_column': {'type': 'str', 'default': 'score'}, 'score_bands': {'type': 'list', 'default': None}} ['visualization', 'credit_risk', 'scorecard'] ['classification']
validmind.data_validation.SeasonalDecompose Seasonal Decompose Assesses patterns and seasonality in a time series dataset by decomposing its features into foundational components.... True False ['dataset'] {'seasonal_model': {'type': 'str', 'default': 'additive'}} ['time_series_data', 'seasonality', 'statsmodels'] ['regression']
validmind.data_validation.ShapiroWilk Shapiro Wilk Evaluates feature-wise normality of training data using the Shapiro-Wilk test.... False True ['dataset'] {} ['tabular_data', 'data_distribution', 'statistical_test'] ['classification', 'regression']
validmind.data_validation.Skewness Skewness Evaluates the skewness of numerical data in a dataset to check against a defined threshold, aiming to ensure data... False True ['dataset'] {'max_threshold': {'type': '_empty', 'default': 1}} ['data_quality', 'tabular_data'] ['classification', 'regression']
validmind.data_validation.SpreadPlot Spread Plot Assesses potential correlations between pairs of time series variables through visualization to enhance... True False ['dataset'] {} ['time_series_data', 'visualization'] ['regression']
validmind.data_validation.TabularCategoricalBarPlots Tabular Categorical Bar Plots Generates and visualizes bar plots for each category in categorical features to evaluate the dataset's composition.... True False ['dataset'] {} ['tabular_data', 'visualization'] ['classification', 'regression']
validmind.data_validation.TabularDateTimeHistograms Tabular Date Time Histograms Generates histograms to provide graphical insight into the distribution of time intervals in a model's datetime... True False ['dataset'] {} ['time_series_data', 'visualization'] ['classification', 'regression']
validmind.data_validation.TabularDescriptionTables Tabular Description Tables Summarizes key descriptive statistics for numerical, categorical, and datetime variables in a dataset.... False True ['dataset'] {} ['tabular_data'] ['classification', 'regression']
validmind.data_validation.TabularNumericalHistograms Tabular Numerical Histograms Generates histograms for each numerical feature in a dataset to provide visual insights into data distribution and... True False ['dataset'] {} ['tabular_data', 'visualization'] ['classification', 'regression']
validmind.data_validation.TargetRateBarPlots Target Rate Bar Plots Generates bar plots visualizing the default rates of categorical features for a classification machine learning... True False ['dataset'] {} ['tabular_data', 'visualization', 'categorical_data'] ['classification']
validmind.data_validation.TimeSeriesDescription Time Series Description Generates a detailed analysis for the provided time series dataset, summarizing key statistics to identify trends,... False True ['dataset'] {} ['time_series_data', 'analysis'] ['regression']
validmind.data_validation.TimeSeriesDescriptiveStatistics Time Series Descriptive Statistics Evaluates the descriptive statistics of a time series dataset to identify trends, patterns, and data quality issues.... False True ['dataset'] {} ['time_series_data', 'analysis'] ['regression']
validmind.data_validation.TimeSeriesFrequency Time Series Frequency Evaluates consistency of time series data frequency and generates a frequency plot.... True True ['dataset'] {} ['time_series_data'] ['regression']
validmind.data_validation.TimeSeriesHistogram Time Series Histogram Visualizes distribution of time-series data using histograms and Kernel Density Estimation (KDE) lines.... True False ['dataset'] {'nbins': {'type': '_empty', 'default': 30}} ['data_validation', 'visualization', 'time_series_data'] ['regression', 'time_series_forecasting']
validmind.data_validation.TimeSeriesLinePlot Time Series Line Plot Generates and analyses time-series data through line plots revealing trends, patterns, anomalies over time.... True False ['dataset'] {} ['time_series_data', 'visualization'] ['regression']
validmind.data_validation.TimeSeriesMissingValues Time Series Missing Values Validates time-series data quality by confirming the count of missing values is below a certain threshold.... True True ['dataset'] {'min_threshold': {'type': 'int', 'default': 1}} ['time_series_data'] ['regression']
validmind.data_validation.TimeSeriesOutliers Time Series Outliers Identifies and visualizes outliers in time-series data using the z-score method.... False True ['dataset'] {'zscore_threshold': {'type': 'int', 'default': 3}} ['time_series_data'] ['regression']
validmind.data_validation.TooManyZeroValues Too Many Zero Values Identifies numerical columns in a dataset that contain an excessive number of zero values, defined by a threshold... False True ['dataset'] {'max_percent_threshold': {'type': 'float', 'default': 0.03}} ['tabular_data'] ['regression', 'classification']
validmind.data_validation.UniqueRows Unique Rows Verifies the diversity of the dataset by ensuring that the count of unique rows exceeds a prescribed threshold.... False True ['dataset'] {'min_percent_threshold': {'type': 'float', 'default': 1}} ['tabular_data'] ['regression', 'classification']
validmind.data_validation.WOEBinPlots WOE Bin Plots Generates visualizations of Weight of Evidence (WoE) and Information Value (IV) for understanding predictive power... True False ['dataset'] {'breaks_adj': {'type': 'list', 'default': None}, 'fig_height': {'type': 'int', 'default': 600}, 'fig_width': {'type': 'int', 'default': 500}} ['tabular_data', 'visualization', 'categorical_data'] ['classification']
validmind.data_validation.WOEBinTable WOE Bin Table Assesses the Weight of Evidence (WoE) and Information Value (IV) of each feature to evaluate its predictive power... False True ['dataset'] {'breaks_adj': {'type': 'list', 'default': None}} ['tabular_data', 'categorical_data'] ['classification']
validmind.data_validation.ZivotAndrewsArch Zivot Andrews Arch Evaluates the order of integration and stationarity of time series data using the Zivot-Andrews unit root test.... False True ['dataset'] {} ['time_series_data', 'stationarity', 'unit_root_test'] ['regression']
validmind.data_validation.nlp.CommonWords Common Words Assesses the most frequent non-stopwords in a text column for identifying prevalent language patterns.... True False ['dataset'] {} ['nlp', 'text_data', 'visualization', 'frequency_analysis'] ['text_classification', 'text_summarization']
validmind.data_validation.nlp.Hashtags Hashtags Assesses hashtag frequency in a text column, highlighting usage trends and potential dataset bias or spam.... True False ['dataset'] {'top_hashtags': {'type': 'int', 'default': 25}} ['nlp', 'text_data', 'visualization', 'frequency_analysis'] ['text_classification', 'text_summarization']
validmind.data_validation.nlp.LanguageDetection Language Detection Assesses the diversity of languages in a textual dataset by detecting and visualizing the distribution of languages.... True False ['dataset'] {} ['nlp', 'text_data', 'visualization'] ['text_classification', 'text_summarization']
validmind.data_validation.nlp.Mentions Mentions Calculates and visualizes frequencies of '@' prefixed mentions in a text-based dataset for NLP model analysis.... True False ['dataset'] {'top_mentions': {'type': 'int', 'default': 25}} ['nlp', 'text_data', 'visualization', 'frequency_analysis'] ['text_classification', 'text_summarization']
validmind.data_validation.nlp.PolarityAndSubjectivity Polarity And Subjectivity Analyzes the polarity and subjectivity of text data within a given dataset to visualize the sentiment distribution.... True True ['dataset'] {'threshold_subjectivity': {'type': '_empty', 'default': 0.5}, 'threshold_polarity': {'type': '_empty', 'default': 0}} ['nlp', 'text_data', 'data_validation'] ['nlp']
validmind.data_validation.nlp.Punctuations Punctuations Analyzes and visualizes the frequency distribution of punctuation usage in a given text dataset.... True False ['dataset'] {'count_mode': {'type': '_empty', 'default': 'token'}} ['nlp', 'text_data', 'visualization', 'frequency_analysis'] ['text_classification', 'text_summarization', 'nlp']
validmind.data_validation.nlp.Sentiment Sentiment Analyzes the sentiment of text data within a dataset using the VADER sentiment analysis tool.... True False ['dataset'] {} ['nlp', 'text_data', 'data_validation'] ['nlp']
validmind.data_validation.nlp.StopWords Stop Words Evaluates and visualizes the frequency of English stop words in a text dataset against a defined threshold.... True True ['dataset'] {'min_percent_threshold': {'type': 'float', 'default': 0.5}, 'num_words': {'type': 'int', 'default': 25}} ['nlp', 'text_data', 'frequency_analysis', 'visualization'] ['text_classification', 'text_summarization']
validmind.data_validation.nlp.TextDescription Text Description Conducts comprehensive textual analysis on a dataset using NLTK to evaluate various parameters and generate... True False ['dataset'] {'unwanted_tokens': {'type': 'set', 'default': {'``', 's', 'ms', 'us', "''", 'mrs', 'dollar', "'s", "s'", 'dr', ' ', 'mr'}}, 'lang': {'type': 'str', 'default': 'english'}} ['nlp', 'text_data', 'visualization'] ['text_classification', 'text_summarization']
validmind.data_validation.nlp.Toxicity Toxicity Assesses the toxicity of text data within a dataset to visualize the distribution of toxicity scores.... True False ['dataset'] {} ['nlp', 'text_data', 'data_validation'] ['nlp']
validmind.model_validation.BertScore Bert Score Assesses the quality of machine-generated text using BERTScore metrics and visualizes results through histograms... True True ['dataset', 'model'] {'evaluation_model': {'type': '_empty', 'default': 'distilbert-base-uncased'}} ['nlp', 'text_data', 'visualization'] ['text_classification', 'text_summarization']
validmind.model_validation.BleuScore Bleu Score Evaluates the quality of machine-generated text using BLEU metrics and visualizes the results through histograms... True True ['dataset', 'model'] {} ['nlp', 'text_data', 'visualization'] ['text_classification', 'text_summarization']
validmind.model_validation.ClusterSizeDistribution Cluster Size Distribution Assesses the performance of clustering models by comparing the distribution of cluster sizes in model predictions... True False ['dataset', 'model'] {} ['sklearn', 'model_performance'] ['clustering']
validmind.model_validation.ContextualRecall Contextual Recall Evaluates a Natural Language Generation model's ability to generate contextually relevant and factually correct... True True ['dataset', 'model'] {} ['nlp', 'text_data', 'visualization'] ['text_classification', 'text_summarization']
validmind.model_validation.FeaturesAUC Features AUC Evaluates the discriminatory power of each individual feature within a binary classification model by calculating... True False ['dataset'] {'fontsize': {'type': 'int', 'default': 12}, 'figure_height': {'type': 'int', 'default': 500}} ['feature_importance', 'AUC', 'visualization'] ['classification']
validmind.model_validation.MeteorScore Meteor Score Assesses the quality of machine-generated translations by comparing them to human-produced references using the... True True ['dataset', 'model'] {} ['nlp', 'text_data', 'visualization'] ['text_classification', 'text_summarization']
validmind.model_validation.ModelMetadata Model Metadata Compare metadata of different models and generate a summary table with the results.... False True ['model'] {} ['model_training', 'metadata'] ['regression', 'time_series_forecasting']
validmind.model_validation.ModelPredictionResiduals Model Prediction Residuals Assesses normality and behavior of residuals in regression models through visualization and statistical tests.... True True ['dataset', 'model'] {'nbins': {'type': 'int', 'default': 100}, 'p_value_threshold': {'type': 'float', 'default': 0.05}, 'start_date': {'type': 'Optional', 'default': None}, 'end_date': {'type': 'Optional', 'default': None}} ['regression'] ['residual_analysis', 'visualization']
validmind.model_validation.RegardScore Regard Score Assesses the sentiment and potential biases in text generated by NLP models by computing and visualizing regard... True True ['dataset', 'model'] {} ['nlp', 'text_data', 'visualization'] ['text_classification', 'text_summarization']
validmind.model_validation.RegressionResidualsPlot Regression Residuals Plot Evaluates regression model performance using residual distribution and actual vs. predicted plots.... True False ['model', 'dataset'] {'bin_size': {'type': 'float', 'default': 0.1}} ['model_performance', 'visualization'] ['regression']
validmind.model_validation.RougeScore Rouge Score Assesses the quality of machine-generated text using ROUGE metrics and visualizes the results to provide... True True ['dataset', 'model'] {'metric': {'type': 'str', 'default': 'rouge-1'}} ['nlp', 'text_data', 'visualization'] ['text_classification', 'text_summarization']
validmind.model_validation.TimeSeriesPredictionWithCI Time Series Prediction With CI Assesses predictive accuracy and uncertainty in time series models, highlighting breaches beyond confidence... True True ['dataset', 'model'] {'confidence': {'type': 'float', 'default': 0.95}} ['model_predictions', 'visualization'] ['regression', 'time_series_forecasting']
validmind.model_validation.TimeSeriesPredictionsPlot Time Series Predictions Plot Plot actual vs predicted values for time series data and generate a visual comparison for the model.... True False ['dataset', 'model'] {} ['model_predictions', 'visualization'] ['regression', 'time_series_forecasting']
validmind.model_validation.TimeSeriesR2SquareBySegments Time Series R2 Square By Segments Evaluates the R-Squared values of regression models over specified time segments in time series data to assess... True True ['dataset', 'model'] {'segments': {'type': 'Optional', 'default': None}} ['model_performance', 'sklearn'] ['regression', 'time_series_forecasting']
validmind.model_validation.TokenDisparity Token Disparity Evaluates the token disparity between reference and generated texts, visualizing the results through histograms and... True True ['dataset', 'model'] {} ['nlp', 'text_data', 'visualization'] ['text_classification', 'text_summarization']
validmind.model_validation.ToxicityScore Toxicity Score Assesses the toxicity levels of texts generated by NLP models to identify and mitigate harmful or offensive content.... True True ['dataset', 'model'] {} ['nlp', 'text_data', 'visualization'] ['text_classification', 'text_summarization']
validmind.model_validation.embeddings.ClusterDistribution Cluster Distribution Assesses the distribution of text embeddings across clusters produced by a model using KMeans clustering.... True False ['model', 'dataset'] {'num_clusters': {'type': 'int', 'default': 5}} ['llm', 'text_data', 'embeddings', 'visualization'] ['feature_extraction']
validmind.model_validation.embeddings.CosineSimilarityComparison Cosine Similarity Comparison Assesses the similarity between embeddings generated by different models using Cosine Similarity, providing both... True True ['dataset', 'models'] {} ['visualization', 'dimensionality_reduction', 'embeddings'] ['text_qa', 'text_generation', 'text_summarization']
validmind.model_validation.embeddings.CosineSimilarityDistribution Cosine Similarity Distribution Assesses the similarity between predicted text embeddings from a model using a Cosine Similarity distribution... True False ['dataset', 'model'] {} ['llm', 'text_data', 'embeddings', 'visualization'] ['feature_extraction']
validmind.model_validation.embeddings.CosineSimilarityHeatmap Cosine Similarity Heatmap Generates an interactive heatmap to visualize the cosine similarities among embeddings derived from a given model.... True False ['dataset', 'model'] {'title': {'type': '_empty', 'default': 'Cosine Similarity Matrix'}, 'color': {'type': '_empty', 'default': 'Cosine Similarity'}, 'xaxis_title': {'type': '_empty', 'default': 'Index'}, 'yaxis_title': {'type': '_empty', 'default': 'Index'}, 'color_scale': {'type': '_empty', 'default': 'Blues'}} ['visualization', 'dimensionality_reduction', 'embeddings'] ['text_qa', 'text_generation', 'text_summarization']
validmind.model_validation.embeddings.DescriptiveAnalytics Descriptive Analytics Evaluates statistical properties of text embeddings in an ML model via mean, median, and standard deviation... True False ['dataset', 'model'] {} ['llm', 'text_data', 'embeddings', 'visualization'] ['feature_extraction']
validmind.model_validation.embeddings.EmbeddingsVisualization2D Embeddings Visualization2 D Visualizes 2D representation of text embeddings generated by a model using t-SNE technique.... True False ['dataset', 'model'] {'cluster_column': {'type': 'Optional', 'default': None}, 'perplexity': {'type': 'int', 'default': 30}} ['llm', 'text_data', 'embeddings', 'visualization'] ['feature_extraction']
validmind.model_validation.embeddings.EuclideanDistanceComparison Euclidean Distance Comparison Assesses and visualizes the dissimilarity between model embeddings using Euclidean distance, providing insights... True True ['dataset', 'models'] {} ['visualization', 'dimensionality_reduction', 'embeddings'] ['text_qa', 'text_generation', 'text_summarization']
validmind.model_validation.embeddings.EuclideanDistanceHeatmap Euclidean Distance Heatmap Generates an interactive heatmap to visualize the Euclidean distances among embeddings derived from a given model.... True False ['dataset', 'model'] {'title': {'type': '_empty', 'default': 'Euclidean Distance Matrix'}, 'color': {'type': '_empty', 'default': 'Euclidean Distance'}, 'xaxis_title': {'type': '_empty', 'default': 'Index'}, 'yaxis_title': {'type': '_empty', 'default': 'Index'}, 'color_scale': {'type': '_empty', 'default': 'Blues'}} ['visualization', 'dimensionality_reduction', 'embeddings'] ['text_qa', 'text_generation', 'text_summarization']
validmind.model_validation.embeddings.PCAComponentsPairwisePlots PCA Components Pairwise Plots Generates scatter plots for pairwise combinations of principal component analysis (PCA) components of model... True False ['dataset', 'model'] {'n_components': {'type': 'int', 'default': 3}} ['visualization', 'dimensionality_reduction', 'embeddings'] ['text_qa', 'text_generation', 'text_summarization']
validmind.model_validation.embeddings.StabilityAnalysisKeyword Stability Analysis Keyword Evaluates robustness of embedding models to keyword swaps in the test dataset.... True True ['dataset', 'model'] {'keyword_dict': {'type': 'Dict', 'default': None}, 'mean_similarity_threshold': {'type': 'float', 'default': 0.7}} ['llm', 'text_data', 'embeddings', 'visualization'] ['feature_extraction']
validmind.model_validation.embeddings.StabilityAnalysisRandomNoise Stability Analysis Random Noise Assesses the robustness of text embeddings models to random noise introduced via text perturbations.... True True ['dataset', 'model'] {'probability': {'type': 'float', 'default': 0.02}, 'mean_similarity_threshold': {'type': 'float', 'default': 0.7}} ['llm', 'text_data', 'embeddings', 'visualization'] ['feature_extraction']
validmind.model_validation.embeddings.StabilityAnalysisSynonyms Stability Analysis Synonyms Evaluates the stability of text embeddings models when words in test data are replaced by their synonyms randomly.... True True ['dataset', 'model'] {'probability': {'type': 'float', 'default': 0.02}, 'mean_similarity_threshold': {'type': 'float', 'default': 0.7}} ['llm', 'text_data', 'embeddings', 'visualization'] ['feature_extraction']
validmind.model_validation.embeddings.StabilityAnalysisTranslation Stability Analysis Translation Evaluates robustness of text embeddings models to noise introduced by translating the original text to another... True True ['dataset', 'model'] {'source_lang': {'type': 'str', 'default': 'en'}, 'target_lang': {'type': 'str', 'default': 'fr'}, 'mean_similarity_threshold': {'type': 'float', 'default': 0.7}} ['llm', 'text_data', 'embeddings', 'visualization'] ['feature_extraction']
validmind.model_validation.embeddings.TSNEComponentsPairwisePlots TSNE Components Pairwise Plots Creates scatter plots for pairwise combinations of t-SNE components to visualize embeddings and highlight potential... True False ['dataset', 'model'] {'n_components': {'type': 'int', 'default': 2}, 'perplexity': {'type': 'int', 'default': 30}, 'title': {'type': 'str', 'default': 't-SNE'}} ['visualization', 'dimensionality_reduction', 'embeddings'] ['text_qa', 'text_generation', 'text_summarization']
validmind.model_validation.ragas.AnswerCorrectness Answer Correctness Evaluates the correctness of answers in a dataset with respect to the provided ground... True True ['dataset'] {'user_input_column': {'type': 'str', 'default': 'user_input'}, 'response_column': {'type': 'str', 'default': 'response'}, 'reference_column': {'type': 'str', 'default': 'reference'}, 'judge_llm': {'type': '_empty', 'default': None}, 'judge_embeddings': {'type': '_empty', 'default': None}} ['ragas', 'llm'] ['text_qa', 'text_generation', 'text_summarization']
validmind.model_validation.ragas.AspectCritic Aspect Critic Evaluates generations against the following aspects: harmfulness, maliciousness,... True True ['dataset'] {'user_input_column': {'type': 'str', 'default': 'user_input'}, 'response_column': {'type': 'str', 'default': 'response'}, 'retrieved_contexts_column': {'type': 'Optional', 'default': None}, 'aspects': {'type': 'List', 'default': ['coherence', 'conciseness', 'correctness', 'harmfulness', 'maliciousness']}, 'additional_aspects': {'type': 'Optional', 'default': None}, 'judge_llm': {'type': '_empty', 'default': None}, 'judge_embeddings': {'type': '_empty', 'default': None}} ['ragas', 'llm', 'qualitative'] ['text_summarization', 'text_generation', 'text_qa']
validmind.model_validation.ragas.ContextEntityRecall Context Entity Recall Evaluates the context entity recall for dataset entries and visualizes the results.... True True ['dataset'] {'retrieved_contexts_column': {'type': 'str', 'default': 'retrieved_contexts'}, 'reference_column': {'type': 'str', 'default': 'reference'}, 'judge_llm': {'type': '_empty', 'default': None}, 'judge_embeddings': {'type': '_empty', 'default': None}} ['ragas', 'llm', 'retrieval_performance'] ['text_qa', 'text_generation', 'text_summarization']
validmind.model_validation.ragas.ContextPrecision Context Precision Context Precision is a metric that evaluates whether all of the ground-truth... True True ['dataset'] {'user_input_column': {'type': 'str', 'default': 'user_input'}, 'retrieved_contexts_column': {'type': 'str', 'default': 'retrieved_contexts'}, 'reference_column': {'type': 'str', 'default': 'reference'}, 'judge_llm': {'type': '_empty', 'default': None}, 'judge_embeddings': {'type': '_empty', 'default': None}} ['ragas', 'llm', 'retrieval_performance'] ['text_qa', 'text_generation', 'text_summarization', 'text_classification']
validmind.model_validation.ragas.ContextPrecisionWithoutReference Context Precision Without Reference Context Precision Without Reference is a metric used to evaluate the relevance of... True True ['dataset'] {'user_input_column': {'type': 'str', 'default': 'user_input'}, 'retrieved_contexts_column': {'type': 'str', 'default': 'retrieved_contexts'}, 'response_column': {'type': 'str', 'default': 'response'}, 'judge_llm': {'type': '_empty', 'default': None}, 'judge_embeddings': {'type': '_empty', 'default': None}} ['ragas', 'llm', 'retrieval_performance'] ['text_qa', 'text_generation', 'text_summarization', 'text_classification']
validmind.model_validation.ragas.ContextRecall Context Recall Context recall measures the extent to which the retrieved context aligns with the... True True ['dataset'] {'user_input_column': {'type': 'str', 'default': 'user_input'}, 'retrieved_contexts_column': {'type': 'str', 'default': 'retrieved_contexts'}, 'reference_column': {'type': 'str', 'default': 'reference'}, 'judge_llm': {'type': '_empty', 'default': None}, 'judge_embeddings': {'type': '_empty', 'default': None}} ['ragas', 'llm', 'retrieval_performance'] ['text_qa', 'text_generation', 'text_summarization', 'text_classification']
validmind.model_validation.ragas.Faithfulness Faithfulness Evaluates the faithfulness of the generated answers with respect to retrieved contexts.... True True ['dataset'] {'user_input_column': {'type': 'str', 'default': 'user_input'}, 'response_column': {'type': 'str', 'default': 'response'}, 'retrieved_contexts_column': {'type': 'str', 'default': 'retrieved_contexts'}, 'judge_llm': {'type': '_empty', 'default': None}, 'judge_embeddings': {'type': '_empty', 'default': None}} ['ragas', 'llm', 'rag_performance'] ['text_qa', 'text_generation', 'text_summarization']
validmind.model_validation.ragas.NoiseSensitivity Noise Sensitivity Assesses the sensitivity of a Large Language Model (LLM) to noise in retrieved context by measuring how often it... True True ['dataset'] {'response_column': {'type': 'str', 'default': 'response'}, 'retrieved_contexts_column': {'type': 'str', 'default': 'retrieved_contexts'}, 'reference_column': {'type': 'str', 'default': 'reference'}, 'focus': {'type': 'str', 'default': 'relevant'}, 'user_input_column': {'type': 'str', 'default': 'user_input'}, 'judge_llm': {'type': '_empty', 'default': None}, 'judge_embeddings': {'type': '_empty', 'default': None}} ['ragas', 'llm', 'rag_performance'] ['text_qa', 'text_generation', 'text_summarization']
validmind.model_validation.ragas.ResponseRelevancy Response Relevancy Assesses how pertinent the generated answer is to the given prompt.... True True ['dataset'] {'user_input_column': {'type': 'str', 'default': 'user_input'}, 'retrieved_contexts_column': {'type': 'str', 'default': None}, 'response_column': {'type': 'str', 'default': 'response'}, 'judge_llm': {'type': '_empty', 'default': None}, 'judge_embeddings': {'type': '_empty', 'default': None}} ['ragas', 'llm', 'rag_performance'] ['text_qa', 'text_generation', 'text_summarization']
validmind.model_validation.ragas.SemanticSimilarity Semantic Similarity Calculates the semantic similarity between generated responses and ground truths... True True ['dataset'] {'response_column': {'type': 'str', 'default': 'response'}, 'reference_column': {'type': 'str', 'default': 'reference'}, 'judge_llm': {'type': '_empty', 'default': None}, 'judge_embeddings': {'type': '_empty', 'default': None}} ['ragas', 'llm'] ['text_qa', 'text_generation', 'text_summarization']
validmind.model_validation.sklearn.AdjustedMutualInformation Adjusted Mutual Information Evaluates clustering model performance by measuring mutual information between true and predicted labels, adjusting... False True ['model', 'dataset'] {} ['sklearn', 'model_performance', 'clustering'] ['clustering']
validmind.model_validation.sklearn.AdjustedRandIndex Adjusted Rand Index Measures the similarity between two data clusters using the Adjusted Rand Index (ARI) metric in clustering machine... False True ['model', 'dataset'] {} ['sklearn', 'model_performance', 'clustering'] ['clustering']
validmind.model_validation.sklearn.CalibrationCurve Calibration Curve Evaluates the calibration of probability estimates by comparing predicted probabilities against observed... True False ['model', 'dataset'] {'n_bins': {'type': 'int', 'default': 10}} ['sklearn', 'model_performance', 'classification'] ['classification']
validmind.model_validation.sklearn.ClassifierPerformance Classifier Performance Evaluates performance of binary or multiclass classification models using precision, recall, F1-Score, accuracy,... False True ['dataset', 'model'] {'average': {'type': 'str', 'default': 'macro'}} ['sklearn', 'binary_classification', 'multiclass_classification', 'model_performance'] ['classification', 'text_classification']
validmind.model_validation.sklearn.ClassifierThresholdOptimization Classifier Threshold Optimization Analyzes and visualizes different threshold optimization methods for binary classification models.... False True ['dataset', 'model'] {'methods': {'type': 'Optional', 'default': None}, 'target_recall': {'type': 'Optional', 'default': None}} ['model_validation', 'threshold_optimization', 'classification_metrics'] ['classification']
validmind.model_validation.sklearn.ClusterCosineSimilarity Cluster Cosine Similarity Measures the intra-cluster similarity of a clustering model using cosine similarity.... False True ['model', 'dataset'] {} ['sklearn', 'model_performance', 'clustering'] ['clustering']
validmind.model_validation.sklearn.ClusterPerformanceMetrics Cluster Performance Metrics Evaluates the performance of clustering machine learning models using multiple established metrics.... False True ['model', 'dataset'] {} ['sklearn', 'model_performance', 'clustering'] ['clustering']
validmind.model_validation.sklearn.CompletenessScore Completeness Score Evaluates a clustering model's capacity to categorize instances from a single class into the same cluster.... False True ['model', 'dataset'] {} ['sklearn', 'model_performance', 'clustering'] ['clustering']
validmind.model_validation.sklearn.ConfusionMatrix Confusion Matrix Evaluates and visually represents the classification ML model's predictive performance using a Confusion Matrix... True False ['dataset', 'model'] {'threshold': {'type': 'float', 'default': 0.5}} ['sklearn', 'binary_classification', 'multiclass_classification', 'model_performance', 'visualization'] ['classification', 'text_classification']
validmind.model_validation.sklearn.FeatureImportance Feature Importance Compute feature importance scores for a given model and generate a summary table... False True ['dataset', 'model'] {'num_features': {'type': 'int', 'default': 3}} ['model_explainability', 'sklearn'] ['regression', 'time_series_forecasting']
validmind.model_validation.sklearn.FowlkesMallowsScore Fowlkes Mallows Score Evaluates the similarity between predicted and actual cluster assignments in a model using the Fowlkes-Mallows... False True ['dataset', 'model'] {} ['sklearn', 'model_performance'] ['clustering']
validmind.model_validation.sklearn.HomogeneityScore Homogeneity Score Assesses clustering homogeneity by comparing true and predicted labels, scoring from 0 (heterogeneous) to 1... False True ['dataset', 'model'] {} ['sklearn', 'model_performance'] ['clustering']
validmind.model_validation.sklearn.HyperParametersTuning Hyper Parameters Tuning Performs exhaustive grid search over specified parameter ranges to find optimal model configurations... False True ['model', 'dataset'] {'param_grid': {'type': 'dict', 'default': None}, 'scoring': {'type': 'Union', 'default': None}, 'thresholds': {'type': 'Union', 'default': None}, 'fit_params': {'type': 'dict', 'default': None}} ['sklearn', 'model_performance'] ['clustering', 'classification']
validmind.model_validation.sklearn.KMeansClustersOptimization K Means Clusters Optimization Optimizes the number of clusters in K-means models using Elbow and Silhouette methods.... True False ['model', 'dataset'] {'n_clusters': {'type': 'Optional', 'default': None}} ['sklearn', 'model_performance', 'kmeans'] ['clustering']
validmind.model_validation.sklearn.MinimumAccuracy Minimum Accuracy Checks if the model's prediction accuracy meets or surpasses a specified threshold.... False True ['dataset', 'model'] {'min_threshold': {'type': 'float', 'default': 0.7}} ['sklearn', 'binary_classification', 'multiclass_classification', 'model_performance'] ['classification', 'text_classification']
validmind.model_validation.sklearn.MinimumF1Score Minimum F1 Score Assesses if the model's F1 score on the validation set meets a predefined minimum threshold, ensuring balanced... False True ['dataset', 'model'] {'min_threshold': {'type': 'float', 'default': 0.5}} ['sklearn', 'binary_classification', 'multiclass_classification', 'model_performance'] ['classification', 'text_classification']
validmind.model_validation.sklearn.MinimumROCAUCScore Minimum ROCAUC Score Validates model by checking if the ROC AUC score meets or surpasses a specified threshold.... False True ['dataset', 'model'] {'min_threshold': {'type': 'float', 'default': 0.5}} ['sklearn', 'binary_classification', 'multiclass_classification', 'model_performance'] ['classification', 'text_classification']
validmind.model_validation.sklearn.ModelParameters Model Parameters Extracts and displays model parameters in a structured format for transparency and reproducibility.... False True ['model'] {'model_params': {'type': 'Optional', 'default': None}} ['model_training', 'metadata'] ['classification', 'regression']
validmind.model_validation.sklearn.ModelsPerformanceComparison Models Performance Comparison Evaluates and compares the performance of multiple Machine Learning models using various metrics like accuracy,... False True ['dataset', 'models'] {} ['sklearn', 'binary_classification', 'multiclass_classification', 'model_performance', 'model_comparison'] ['classification', 'text_classification']
validmind.model_validation.sklearn.OverfitDiagnosis Overfit Diagnosis Assesses potential overfitting in a model's predictions, identifying regions where performance between training and... True True ['model', 'datasets'] {'metric': {'type': 'str', 'default': None}, 'cut_off_threshold': {'type': 'float', 'default': 0.04}} ['sklearn', 'binary_classification', 'multiclass_classification', 'linear_regression', 'model_diagnosis'] ['classification', 'regression']
validmind.model_validation.sklearn.PermutationFeatureImportance Permutation Feature Importance Assesses the significance of each feature in a model by evaluating the impact on model performance when feature... True False ['model', 'dataset'] {'fontsize': {'type': 'Optional', 'default': None}, 'figure_height': {'type': 'Optional', 'default': None}} ['sklearn', 'binary_classification', 'multiclass_classification', 'feature_importance', 'visualization'] ['classification', 'text_classification']
validmind.model_validation.sklearn.PopulationStabilityIndex Population Stability Index Assesses the Population Stability Index (PSI) to quantify the stability of an ML model's predictions across... True True ['datasets', 'model'] {'num_bins': {'type': 'int', 'default': 10}, 'mode': {'type': 'str', 'default': 'fixed'}} ['sklearn', 'binary_classification', 'multiclass_classification', 'model_performance'] ['classification', 'text_classification']
validmind.model_validation.sklearn.PrecisionRecallCurve Precision Recall Curve Evaluates the precision-recall trade-off for binary classification models and visualizes the Precision-Recall curve.... True False ['model', 'dataset'] {} ['sklearn', 'binary_classification', 'multiclass_classification', 'model_performance', 'visualization'] ['classification', 'text_classification']
validmind.model_validation.sklearn.ROCCurve ROC Curve Evaluates classification model performance by generating and plotting the Receiver Operating Characteristic... True False ['model', 'dataset'] {} ['sklearn', 'binary_classification', 'multiclass_classification', 'model_performance', 'visualization'] ['classification', 'text_classification']
validmind.model_validation.sklearn.RegressionErrors Regression Errors Assesses the performance and error distribution of a regression model using various error metrics.... False True ['model', 'dataset'] {} ['sklearn', 'model_performance'] ['regression', 'classification']
validmind.model_validation.sklearn.RegressionErrorsComparison Regression Errors Comparison Assesses multiple regression error metrics to compare model performance across different datasets, emphasizing... False True ['datasets', 'models'] {} ['model_performance', 'sklearn'] ['regression', 'time_series_forecasting']
validmind.model_validation.sklearn.RegressionPerformance Regression Performance Evaluates the performance of a regression model using five different metrics: MAE, MSE, RMSE, MAPE, and MBD.... False True ['model', 'dataset'] {} ['sklearn', 'model_performance'] ['regression']
validmind.model_validation.sklearn.RegressionR2Square Regression R2 Square Assesses the overall goodness-of-fit of a regression model by evaluating R-squared (R2) and Adjusted R-squared (Adj... False True ['dataset', 'model'] {} ['sklearn', 'model_performance'] ['regression']
validmind.model_validation.sklearn.RegressionR2SquareComparison Regression R2 Square Comparison Compares R-Squared and Adjusted R-Squared values for different regression models across multiple datasets to assess... False True ['datasets', 'models'] {} ['model_performance', 'sklearn'] ['regression', 'time_series_forecasting']
validmind.model_validation.sklearn.RobustnessDiagnosis Robustness Diagnosis Assesses the robustness of a machine learning model by evaluating performance decay under noisy conditions.... True True ['datasets', 'model'] {'metric': {'type': 'str', 'default': None}, 'scaling_factor_std_dev_list': {'type': 'List', 'default': [0.1, 0.2, 0.3, 0.4, 0.5]}, 'performance_decay_threshold': {'type': 'float', 'default': 0.05}} ['sklearn', 'model_diagnosis', 'visualization'] ['classification', 'regression']
validmind.model_validation.sklearn.SHAPGlobalImportance SHAP Global Importance Evaluates and visualizes global feature importance using SHAP values for model explanation and risk identification.... False True ['model', 'dataset'] {'kernel_explainer_samples': {'type': 'int', 'default': 10}, 'tree_or_linear_explainer_samples': {'type': 'int', 'default': 200}, 'class_of_interest': {'type': 'Optional', 'default': None}} ['sklearn', 'binary_classification', 'multiclass_classification', 'feature_importance', 'visualization'] ['classification', 'text_classification']
validmind.model_validation.sklearn.ScoreProbabilityAlignment Score Probability Alignment Analyzes the alignment between credit scores and predicted probabilities.... True True ['model', 'dataset'] {'score_column': {'type': 'str', 'default': 'score'}, 'n_bins': {'type': 'int', 'default': 10}} ['visualization', 'credit_risk', 'calibration'] ['classification']
validmind.model_validation.sklearn.SilhouettePlot Silhouette Plot Calculates and visualizes Silhouette Score, assessing the degree of data point suitability to its cluster in ML... True True ['model', 'dataset'] {} ['sklearn', 'model_performance'] ['clustering']
validmind.model_validation.sklearn.TrainingTestDegradation Training Test Degradation Tests if model performance degradation between training and test datasets exceeds a predefined threshold.... False True ['datasets', 'model'] {'max_threshold': {'type': 'float', 'default': 0.1}} ['sklearn', 'binary_classification', 'multiclass_classification', 'model_performance', 'visualization'] ['classification', 'text_classification']
validmind.model_validation.sklearn.VMeasure V Measure Evaluates homogeneity and completeness of a clustering model using the V Measure Score.... False True ['dataset', 'model'] {} ['sklearn', 'model_performance'] ['clustering']
validmind.model_validation.sklearn.WeakspotsDiagnosis Weakspots Diagnosis Identifies and visualizes weak spots in a machine learning model's performance across various sections of the... True True ['datasets', 'model'] {'features_columns': {'type': 'Optional', 'default': None}, 'metrics': {'type': 'Optional', 'default': None}, 'thresholds': {'type': 'Optional', 'default': None}} ['sklearn', 'binary_classification', 'multiclass_classification', 'model_diagnosis', 'visualization'] ['classification', 'text_classification']
validmind.model_validation.statsmodels.AutoARIMA Auto ARIMA Evaluates ARIMA models for time-series forecasting, ranking them using Bayesian and Akaike Information Criteria.... False True ['model', 'dataset'] {} ['time_series_data', 'forecasting', 'model_selection', 'statsmodels'] ['regression']
validmind.model_validation.statsmodels.CumulativePredictionProbabilities Cumulative Prediction Probabilities Visualizes cumulative probabilities of positive and negative classes in classification models.... True False ['dataset', 'model'] {'title': {'type': 'str', 'default': 'Cumulative Probabilities'}} ['visualization', 'credit_risk'] ['classification']
validmind.model_validation.statsmodels.DurbinWatsonTest Durbin Watson Test Assesses autocorrelation in time series data features using the Durbin-Watson statistic.... False True ['dataset', 'model'] {'threshold': {'type': 'List', 'default': [1.5, 2.5]}} ['time_series_data', 'forecasting', 'statistical_test', 'statsmodels'] ['regression']
validmind.model_validation.statsmodels.GINITable GINI Table Evaluates classification model performance using AUC, GINI, and KS metrics for training and test datasets.... False True ['dataset', 'model'] {} ['model_performance'] ['classification']
validmind.model_validation.statsmodels.KolmogorovSmirnov Kolmogorov Smirnov Assesses whether each feature in the dataset aligns with a normal distribution using the Kolmogorov-Smirnov test.... False True ['model', 'dataset'] {'dist': {'type': 'str', 'default': 'norm'}} ['tabular_data', 'data_distribution', 'statistical_test', 'statsmodels'] ['classification', 'regression']
validmind.model_validation.statsmodels.Lilliefors Lilliefors Assesses the normality of feature distributions in an ML model's training dataset using the Lilliefors test.... False True ['dataset'] {} ['tabular_data', 'data_distribution', 'statistical_test', 'statsmodels'] ['classification', 'regression']
validmind.model_validation.statsmodels.PredictionProbabilitiesHistogram Prediction Probabilities Histogram Assesses the predictive probability distribution for binary classification to evaluate model performance and... True False ['dataset', 'model'] {'title': {'type': 'str', 'default': 'Histogram of Predictive Probabilities'}} ['visualization', 'credit_risk'] ['classification']
validmind.model_validation.statsmodels.RegressionCoeffs Regression Coeffs Assesses the significance and uncertainty of predictor variables in a regression model through visualization of... True True ['model'] {} ['tabular_data', 'visualization', 'model_training'] ['regression']
validmind.model_validation.statsmodels.RegressionFeatureSignificance Regression Feature Significance Assesses and visualizes the statistical significance of features in a regression model.... True False ['model'] {'fontsize': {'type': 'int', 'default': 10}, 'p_threshold': {'type': 'float', 'default': 0.05}} ['statistical_test', 'model_interpretation', 'visualization', 'feature_importance'] ['regression']
validmind.model_validation.statsmodels.RegressionModelForecastPlot Regression Model Forecast Plot Generates plots to visually compare the forecasted outcomes of a regression model against actual observed values over... True False ['model', 'dataset'] {'start_date': {'type': 'Optional', 'default': None}, 'end_date': {'type': 'Optional', 'default': None}} ['time_series_data', 'forecasting', 'visualization'] ['regression']
validmind.model_validation.statsmodels.RegressionModelForecastPlotLevels Regression Model Forecast Plot Levels Assesses the alignment between forecasted and observed values in regression models through visual plots... True False ['model', 'dataset'] {} ['time_series_data', 'forecasting', 'visualization'] ['regression']
validmind.model_validation.statsmodels.RegressionModelSensitivityPlot Regression Model Sensitivity Plot Assesses the sensitivity of a regression model to changes in independent variables by applying shocks and... True False ['dataset', 'model'] {'shocks': {'type': 'List', 'default': [0.1]}, 'transformation': {'type': 'Optional', 'default': None}} ['senstivity_analysis', 'visualization'] ['regression']
validmind.model_validation.statsmodels.RegressionModelSummary Regression Model Summary Evaluates regression model performance using metrics including R-Squared, Adjusted R-Squared, MSE, and RMSE.... False True ['dataset', 'model'] {} ['model_performance', 'regression'] ['regression']
validmind.model_validation.statsmodels.RegressionPermutationFeatureImportance Regression Permutation Feature Importance Assesses the significance of each feature in a model by evaluating the impact on model performance when feature... True False ['dataset', 'model'] {'fontsize': {'type': 'int', 'default': 12}, 'figure_height': {'type': 'int', 'default': 500}} ['statsmodels', 'feature_importance', 'visualization'] ['regression']
validmind.model_validation.statsmodels.ScorecardHistogram Scorecard Histogram The Scorecard Histogram test evaluates the distribution of credit scores between default and non-default instances,... True False ['dataset'] {'title': {'type': 'str', 'default': 'Histogram of Scores'}, 'score_column': {'type': 'str', 'default': 'score'}} ['visualization', 'credit_risk', 'logistic_regression'] ['classification']
validmind.ongoing_monitoring.CalibrationCurveDrift Calibration Curve Drift Evaluates changes in probability calibration between reference and monitoring datasets.... True True ['datasets', 'model'] {'n_bins': {'type': 'int', 'default': 10}, 'drift_pct_threshold': {'type': 'float', 'default': 20}} ['sklearn', 'binary_classification', 'model_performance', 'visualization'] ['classification', 'text_classification']
validmind.ongoing_monitoring.ClassDiscriminationDrift Class Discrimination Drift Compares classification discrimination metrics between reference and monitoring datasets.... False True ['datasets', 'model'] {'drift_pct_threshold': {'type': '_empty', 'default': 20}} ['sklearn', 'binary_classification', 'multiclass_classification', 'model_performance'] ['classification', 'text_classification']
validmind.ongoing_monitoring.ClassImbalanceDrift Class Imbalance Drift Evaluates drift in class distribution between reference and monitoring datasets.... True True ['datasets'] {'drift_pct_threshold': {'type': 'float', 'default': 5.0}, 'title': {'type': 'str', 'default': 'Class Distribution Drift'}} ['tabular_data', 'binary_classification', 'multiclass_classification'] ['classification']
validmind.ongoing_monitoring.ClassificationAccuracyDrift Classification Accuracy Drift Compares classification accuracy metrics between reference and monitoring datasets.... False True ['datasets', 'model'] {'drift_pct_threshold': {'type': '_empty', 'default': 20}} ['sklearn', 'binary_classification', 'multiclass_classification', 'model_performance'] ['classification', 'text_classification']
validmind.ongoing_monitoring.ConfusionMatrixDrift Confusion Matrix Drift Compares confusion matrix metrics between reference and monitoring datasets.... False True ['datasets', 'model'] {'drift_pct_threshold': {'type': '_empty', 'default': 20}} ['sklearn', 'binary_classification', 'multiclass_classification', 'model_performance'] ['classification', 'text_classification']
validmind.ongoing_monitoring.CumulativePredictionProbabilitiesDrift Cumulative Prediction Probabilities Drift Compares cumulative prediction probability distributions between reference and monitoring datasets.... True False ['datasets', 'model'] {} ['visualization', 'credit_risk'] ['classification']
validmind.ongoing_monitoring.FeatureDrift Feature Drift Evaluates changes in feature distribution over time to identify potential model drift.... True True ['datasets'] {'bins': {'type': '_empty', 'default': [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]}, 'feature_columns': {'type': '_empty', 'default': None}, 'psi_threshold': {'type': '_empty', 'default': 0.2}} ['visualization'] ['monitoring']
validmind.ongoing_monitoring.PredictionAcrossEachFeature Prediction Across Each Feature Assesses differences in model predictions across individual features between reference and monitoring datasets... True False ['datasets', 'model'] {} ['visualization'] ['monitoring']
validmind.ongoing_monitoring.PredictionCorrelation Prediction Correlation Assesses correlation changes between model predictions from reference and monitoring datasets to detect potential... True True ['datasets', 'model'] {'drift_pct_threshold': {'type': 'float', 'default': 20}} ['visualization'] ['monitoring']
validmind.ongoing_monitoring.PredictionProbabilitiesHistogramDrift Prediction Probabilities Histogram Drift Compares prediction probability distributions between reference and monitoring datasets.... True True ['datasets', 'model'] {'title': {'type': '_empty', 'default': 'Prediction Probabilities Histogram Drift'}, 'drift_pct_threshold': {'type': 'float', 'default': 20.0}} ['visualization', 'credit_risk'] ['classification']
validmind.ongoing_monitoring.PredictionQuantilesAcrossFeatures Prediction Quantiles Across Features Assesses differences in model prediction distributions across individual features between reference... True False ['datasets', 'model'] {} ['visualization'] ['monitoring']
validmind.ongoing_monitoring.ROCCurveDrift ROC Curve Drift Compares ROC curves between reference and monitoring datasets.... True False ['datasets', 'model'] {} ['sklearn', 'binary_classification', 'model_performance', 'visualization'] ['classification', 'text_classification']
validmind.ongoing_monitoring.ScoreBandsDrift Score Bands Drift Analyzes drift in population distribution and default rates across score bands.... False True ['datasets', 'model'] {'score_column': {'type': 'str', 'default': 'score'}, 'score_bands': {'type': 'list', 'default': None}, 'drift_threshold': {'type': 'float', 'default': 20.0}} ['visualization', 'credit_risk', 'scorecard'] ['classification']
validmind.ongoing_monitoring.ScorecardHistogramDrift Scorecard Histogram Drift Compares score distributions between reference and monitoring datasets for each class.... True True ['datasets'] {'score_column': {'type': 'str', 'default': 'score'}, 'title': {'type': 'str', 'default': 'Scorecard Histogram Drift'}, 'drift_pct_threshold': {'type': 'float', 'default': 20.0}} ['visualization', 'credit_risk', 'logistic_regression'] ['classification']
validmind.ongoing_monitoring.TargetPredictionDistributionPlot Target Prediction Distribution Plot Assesses differences in prediction distributions between a reference dataset and a monitoring dataset to identify... True True ['datasets', 'model'] {'drift_pct_threshold': {'type': 'float', 'default': 20}} ['visualization'] ['monitoring']
validmind.plots.BoxPlot Box Plot Generates customizable box plots for numerical features in a dataset with optional grouping using Plotly.... True False ['dataset'] {'columns': {'type': 'Optional', 'default': None}, 'group_by': {'type': 'Optional', 'default': None}, 'width': {'type': 'int', 'default': 1800}, 'height': {'type': 'int', 'default': 1200}, 'colors': {'type': 'Optional', 'default': None}, 'show_outliers': {'type': 'bool', 'default': True}, 'title_prefix': {'type': 'str', 'default': 'Box Plot of'}} ['tabular_data', 'visualization', 'data_quality'] ['classification', 'regression', 'clustering']
validmind.plots.CorrelationHeatmap Correlation Heatmap Generates customizable correlation heatmap plots for numerical features in a dataset using Plotly.... True False ['dataset'] {'columns': {'type': 'Optional', 'default': None}, 'method': {'type': 'str', 'default': 'pearson'}, 'show_values': {'type': 'bool', 'default': True}, 'colorscale': {'type': 'str', 'default': 'RdBu'}, 'width': {'type': 'int', 'default': 800}, 'height': {'type': 'int', 'default': 600}, 'mask_upper': {'type': 'bool', 'default': False}, 'threshold': {'type': 'Optional', 'default': None}, 'title': {'type': 'str', 'default': 'Correlation Heatmap'}} ['tabular_data', 'visualization', 'correlation'] ['classification', 'regression', 'clustering']
validmind.plots.HistogramPlot Histogram Plot Generates customizable histogram plots for numerical features in a dataset using Plotly.... True False ['dataset'] {'columns': {'type': 'Optional', 'default': None}, 'bins': {'type': 'Union', 'default': 30}, 'color': {'type': 'str', 'default': 'steelblue'}, 'opacity': {'type': 'float', 'default': 0.7}, 'show_kde': {'type': 'bool', 'default': True}, 'normalize': {'type': 'bool', 'default': False}, 'log_scale': {'type': 'bool', 'default': False}, 'title_prefix': {'type': 'str', 'default': 'Histogram of'}, 'width': {'type': 'int', 'default': 1200}, 'height': {'type': 'int', 'default': 800}, 'n_cols': {'type': 'int', 'default': 2}, 'vertical_spacing': {'type': 'float', 'default': 0.15}, 'horizontal_spacing': {'type': 'float', 'default': 0.1}} ['tabular_data', 'visualization', 'data_quality'] ['classification', 'regression', 'clustering']
validmind.plots.ViolinPlot Violin Plot Generates interactive violin plots for numerical features using Plotly.... False False ['dataset'] {'columns': {'type': 'Optional', 'default': None}, 'group_by': {'type': 'Optional', 'default': None}, 'width': {'type': 'int', 'default': 800}, 'height': {'type': 'int', 'default': 600}} ['tabular_data', 'visualization', 'distribution'] ['classification', 'regression', 'clustering']
validmind.prompt_validation.Bias Bias Assesses potential bias in a Large Language Model by analyzing the distribution and order of exemplars in the... False True ['model'] {'min_threshold': {'type': '_empty', 'default': 7}, 'judge_llm': {'type': '_empty', 'default': None}} ['llm', 'few_shot'] ['text_classification', 'text_summarization']
validmind.prompt_validation.Clarity Clarity Evaluates and scores the clarity of prompts in a Large Language Model based on specified guidelines.... False True ['model'] {'min_threshold': {'type': '_empty', 'default': 7}, 'judge_llm': {'type': '_empty', 'default': None}} ['llm', 'zero_shot', 'few_shot'] ['text_classification', 'text_summarization']
validmind.prompt_validation.Conciseness Conciseness Analyzes and grades the conciseness of prompts provided to a Large Language Model.... False True ['model'] {'min_threshold': {'type': '_empty', 'default': 7}, 'judge_llm': {'type': '_empty', 'default': None}} ['llm', 'zero_shot', 'few_shot'] ['text_classification', 'text_summarization']
validmind.prompt_validation.Delimitation Delimitation Evaluates the proper use of delimiters in prompts provided to Large Language Models.... False True ['model'] {'min_threshold': {'type': '_empty', 'default': 7}, 'judge_llm': {'type': '_empty', 'default': None}} ['llm', 'zero_shot', 'few_shot'] ['text_classification', 'text_summarization']
validmind.prompt_validation.NegativeInstruction Negative Instruction Evaluates and grades the use of affirmative, proactive language over negative instructions in LLM prompts.... False True ['model'] {'min_threshold': {'type': '_empty', 'default': 7}, 'judge_llm': {'type': '_empty', 'default': None}} ['llm', 'zero_shot', 'few_shot'] ['text_classification', 'text_summarization']
validmind.prompt_validation.Robustness Robustness Assesses the robustness of prompts provided to a Large Language Model under varying conditions and contexts. This test... False True ['model', 'dataset'] {'num_tests': {'type': '_empty', 'default': 10}, 'judge_llm': {'type': '_empty', 'default': None}} ['llm', 'zero_shot', 'few_shot'] ['text_classification', 'text_summarization']
validmind.prompt_validation.Specificity Specificity Evaluates and scores the specificity of prompts provided to a Large Language Model (LLM), based on clarity, detail,... False True ['model'] {'min_threshold': {'type': '_empty', 'default': 7}, 'judge_llm': {'type': '_empty', 'default': None}} ['llm', 'zero_shot', 'few_shot'] ['text_classification', 'text_summarization']
validmind.scorers.classification.AbsoluteError Absolute Error Calculates the absolute error per row for a classification model.... False True ['model', 'dataset'] {} ['classification'] ['classification']
validmind.scorers.classification.BrierScore Brier Score Calculates the Brier score per row for a classification model.... False True ['model', 'dataset'] {} ['classification'] ['classification']
validmind.scorers.classification.CalibrationError Calibration Error Calculates the calibration error per row for a classification model.... False True ['model', 'dataset'] {'n_bins': {'type': 'int', 'default': 10}} ['classification'] ['classification']
validmind.scorers.classification.ClassBalance Class Balance Calculates the class balance score per row for a classification model.... False True ['model', 'dataset'] {} ['classification'] ['classification']
validmind.scorers.classification.Confidence Confidence Calculates the prediction confidence per row for a classification model.... False True ['model', 'dataset'] {} ['classification'] ['classification']
validmind.scorers.classification.Correctness Correctness Calculates the correctness per row for a classification model.... False True ['model', 'dataset'] {} ['classification'] ['classification']
validmind.scorers.classification.LogLoss Log Loss Calculates the logarithmic loss per row for a classification model.... False True ['model', 'dataset'] {'eps': {'type': 'float', 'default': 1e-15}} ['classification'] ['classification']
validmind.scorers.classification.OutlierScore Outlier Score Calculates outlier scores and isolation paths for a classification model.... False True ['dataset'] {'contamination': {'type': 'float', 'default': 0.1}} ['classification', 'outlier', 'anomaly'] ['classification']
validmind.scorers.classification.ProbabilityError Probability Error Calculates the probability error per row for a classification model.... False True ['model', 'dataset'] {} ['classification'] ['classification']
validmind.scorers.classification.Uncertainty Uncertainty Calculates the prediction uncertainty per row for a classification model.... False True ['model', 'dataset'] {} ['classification'] ['classification']
validmind.stats.CorrelationAnalysis Correlation Analysis Performs comprehensive correlation analysis with significance testing for numerical features.... False True ['dataset'] {'columns': {'type': 'Optional', 'default': None}, 'method': {'type': 'str', 'default': 'pearson'}, 'significance_level': {'type': 'float', 'default': 0.05}, 'min_correlation': {'type': 'float', 'default': 0.1}} ['tabular_data', 'statistics', 'correlation'] ['classification', 'regression', 'clustering']
validmind.stats.DescriptiveStats Descriptive Stats Provides comprehensive descriptive statistics for numerical features in a dataset.... False True ['dataset'] {'columns': {'type': 'Optional', 'default': None}, 'include_advanced': {'type': 'bool', 'default': True}, 'confidence_level': {'type': 'float', 'default': 0.95}} ['tabular_data', 'statistics', 'data_quality'] ['classification', 'regression', 'clustering']
validmind.stats.NormalityTests Normality Tests Performs multiple normality tests on numerical features to assess distribution normality.... False True ['dataset'] {'columns': {'type': 'Optional', 'default': None}, 'alpha': {'type': 'float', 'default': 0.05}, 'tests': {'type': 'List', 'default': ['shapiro', 'anderson', 'kstest']}} ['tabular_data', 'statistics', 'normality'] ['classification', 'regression', 'clustering']
validmind.stats.OutlierDetection Outlier Detection Detects outliers in numerical features using multiple statistical methods.... False True ['dataset'] {'columns': {'type': 'Optional', 'default': None}, 'methods': {'type': 'List', 'default': ['iqr', 'zscore', 'isolation_forest']}, 'iqr_threshold': {'type': 'float', 'default': 1.5}, 'zscore_threshold': {'type': 'float', 'default': 3.0}, 'contamination': {'type': 'float', 'default': 0.1}} ['tabular_data', 'statistics', 'outliers'] ['classification', 'regression', 'clustering']
validmind.unit_metrics.classification.Accuracy Accuracy Calculates the accuracy of a model False False ['dataset', 'model'] {} ['classification'] ['classification']
validmind.unit_metrics.classification.F1 F1 Calculates the F1 score for a classification model. False False ['model', 'dataset'] {} ['classification'] ['classification']
validmind.unit_metrics.classification.Precision Precision Calculates the precision for a classification model. False False ['model', 'dataset'] {} ['classification'] ['classification']
validmind.unit_metrics.classification.ROC_AUC ROC AUC Calculates the ROC AUC for a classification model. False False ['model', 'dataset'] {} ['classification'] ['classification']
validmind.unit_metrics.classification.Recall Recall Calculates the recall for a classification model. False False ['model', 'dataset'] {} ['classification'] ['classification']
validmind.unit_metrics.regression.AdjustedRSquaredScore Adjusted R Squared Score Calculates the adjusted R-squared score for a regression model. False False ['model', 'dataset'] {} ['regression'] ['regression']
validmind.unit_metrics.regression.GiniCoefficient Gini Coefficient Calculates the Gini coefficient for a regression model. False False ['dataset', 'model'] {} ['regression'] ['regression']
validmind.unit_metrics.regression.HuberLoss Huber Loss Calculates the Huber loss for a regression model. False False ['model', 'dataset'] {} ['regression'] ['regression']
validmind.unit_metrics.regression.KolmogorovSmirnovStatistic Kolmogorov Smirnov Statistic Calculates the Kolmogorov-Smirnov statistic for a regression model. False False ['dataset', 'model'] {} ['regression'] ['regression']
validmind.unit_metrics.regression.MeanAbsoluteError Mean Absolute Error Calculates the mean absolute error for a regression model. False False ['model', 'dataset'] {} ['regression'] ['regression']
validmind.unit_metrics.regression.MeanAbsolutePercentageError Mean Absolute Percentage Error Calculates the mean absolute percentage error for a regression model. False False ['model', 'dataset'] {} ['regression'] ['regression']
validmind.unit_metrics.regression.MeanBiasDeviation Mean Bias Deviation Calculates the mean bias deviation for a regression model. False False ['model', 'dataset'] {} ['regression'] ['regression']
validmind.unit_metrics.regression.MeanSquaredError Mean Squared Error Calculates the mean squared error for a regression model. False False ['model', 'dataset'] {} ['regression'] ['regression']
validmind.unit_metrics.regression.QuantileLoss Quantile Loss Calculates the quantile loss for a regression model. False False ['model', 'dataset'] {'quantile': {'type': '_empty', 'default': 0.5}} ['regression'] ['regression']
validmind.unit_metrics.regression.RSquaredScore R Squared Score Calculates the R-squared score for a regression model. False False ['model', 'dataset'] {} ['regression'] ['regression']
validmind.unit_metrics.regression.RootMeanSquaredError Root Mean Squared Error Calculates the root mean squared error for a regression model. False False ['model', 'dataset'] {} ['regression'] ['regression']

Upgrade ValidMind

After installing ValidMind, you’ll want to periodically make sure you are on the latest version to access any new features and other enhancements.

Retrieve the information for the currently installed version of ValidMind:

%pip show validmind
Name: validmind
Version: 2.13.9
Summary: ValidMind Library
Home-page: 
Author: 
Author-email: Andres Rodriguez <andres@validmind.ai>, Juan Martinez <juan@validmind.ai>, Anil Sorathiya <anil@validmind.ai>, Luis Pallares <luis@validmind.ai>, John Walz <john@validmind.ai>
License: DUAL LICENSE NOTICE

This software is dual-licensed under the GNU Affero General Public License 
version 3 (AGPL-3.0) and the ValidMind Commercial License. Users may choose 
to use the software under either of these licenses, subject to their 
respective terms and conditions.

                     COMMERCIAL LICENSE INQUIRY

If your organization has policies regarding the use of software licensed 
under the GNU Affero General Public License, or if you are interested in 
applications beyond the scope of open-source licenses, a commercial license 
may be more appropriate. The ValidMind Commercial License offers an 
alternative to the AGPL, providing additional flexibility and benefits 
suited for commercial use.

For organizations looking for a license that allows for proprietary 
development, customization, or other uses not covered under the AGPL, the 
ValidMind Commercial License is designed to meet these needs. This license 
is particularly beneficial for those seeking to integrate ValidMind software 
into their own products or services without the requirement to disclose 
proprietary source code.

For inquiries regarding the licensing of this software, please contact 
ValidMind at info@validmind.com.

                    GNU AFFERO GENERAL PUBLIC LICENSE
                       Version 3, 19 November 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.

  A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate.  Many developers of free software are heartened and
encouraged by the resulting cooperation.  However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.

  The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community.  It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server.  Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.

  An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals.  This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU Affero General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Remote Network Interaction; Use with the GNU General Public License.

  Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software.  This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time.  Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as published
    by the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source.  For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code.  There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<https://www.gnu.org/licenses/>.
Location: /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages
Requires: aiohttp, anywidget, beautifulsoup4, ipywidgets, kaleido, matplotlib, mistune, nest-asyncio, numpy, openai, pandas, plotly, polars, python-dotenv, requests, scikit-learn, seaborn, segno, tabulate, tiktoken, tqdm
Required-by: 
Note: you may need to restart the kernel to use updated packages.

If the version returned is lower than the version indicated in our production open-source code, restart your notebook and run:

%pip install --upgrade validmind

You may need to restart your kernel after running the upgrade package for changes to be applied.

In summary

In this first notebook, you learned how to:

Next steps

Start the development process

Now that the ValidMind Library is connected to your model in the ValidMind Library with the correct template applied, we can go ahead and start the development process: 2 — Start the development process


Copyright © 2023-2026 ValidMind Inc. All rights reserved.
Refer to LICENSE for details.
SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial

  • ValidMind Logo
    ©
    Copyright 2026 ValidMind Inc.
    All Rights Reserved.
    Cookie preferences
    Legal
  • Get started
    • Development
    • Validation
    • Setup & admin
  • Guides
    • Access
    • Configuration
    • Integrations
    • Workflows
    • Inventory
    • Documents & templates
    • Documentation
    • Validation
    • Reporting & auditing
    • Monitoring
    • Attestation
  • ValidMind Library
    • Quickstarts
    • Development tutorial
    • Validation tutorial
    • Run tests & test suites
    • Use library features
    • Code samples
    • Python API
    • Public REST API
  • Training
    • Learning paths
    • Courses
    • Videos
  • Support
    • Troubleshooting
    • FAQ
    • Get help
  • Community
    • GitHub
    • LinkedIn
    • Events
    • Blog