{"id":49932673,"url":"https://github.com/steverab/incerto","last_synced_at":"2026-05-17T04:03:45.692Z","repository":{"id":358363973,"uuid":"985466907","full_name":"steverab/incerto","owner":"steverab","description":"A comprehensive library for uncertainty quantification in machine learning.","archived":false,"fork":false,"pushed_at":"2026-05-17T02:11:21.000Z","size":3083,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-05-17T04:03:08.424Z","etag":null,"topics":["active-learning","calibration","conformal-prediction","distribution-shift","llm","out-of-distribution-detection","selective-prediction","uncertainty-quantification"],"latest_commit_sha":null,"homepage":"https://incerto.dev","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/steverab.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-17T20:29:21.000Z","updated_at":"2026-05-17T02:10:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/steverab/incerto","commit_stats":null,"previous_names":["steverab/incerto"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/steverab/incerto","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steverab%2Fincerto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steverab%2Fincerto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steverab%2Fincerto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steverab%2Fincerto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/steverab","download_url":"https://codeload.github.com/steverab/incerto/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steverab%2Fincerto/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33127007,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T18:38:32.183Z","status":"online","status_checked_at":"2026-05-17T02:00:05.366Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["active-learning","calibration","conformal-prediction","distribution-shift","llm","out-of-distribution-detection","selective-prediction","uncertainty-quantification"],"created_at":"2026-05-17T04:03:39.917Z","updated_at":"2026-05-17T04:03:45.682Z","avatar_url":"https://github.com/steverab.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"website/img/og-image.png\" alt=\"incerto\" width=\"600\"\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![Tests](https://github.com/steverab/incerto/actions/workflows/tests.yml/badge.svg)](https://github.com/steverab/incerto/actions/workflows/tests.yml)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![codecov](https://codecov.io/gh/steverab/incerto/branch/master/graph/badge.svg)](https://codecov.io/gh/steverab/incerto)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\n\u003c/div\u003e\n\n**incerto** is a comprehensive Python library for **uncertainty quantification in machine learning**. It provides state-of-the-art methods for calibration, out-of-distribution detection, conformal prediction, selective prediction, and uncertainty estimation in deep learning and LLMs.\n\nLatin *incerto* = \"uncertain, doubtful, unsure\".\n\n\u003e [!WARNING]\n\u003e This is a v0.1 alpha release. The API may change without notice before v1.0.\n\u003e Tested with PyTorch ≥ 2.0, NumPy ≥ 1.24, scikit-learn ≥ 1.3, scipy ≥ 1.11.\n\u003e Please report any issues on [GitHub](https://github.com/steverab/incerto/issues).\n\n## 🎯 Key Features\n\n**incerto** provides a unified interface for:\n\n### \u003cimg src=\"website/img/calibration_icon.svg\" width=\"40\" height=\"40\" align=\"center\"\u003e **Calibration**\n- **Post-hoc calibration**: Temperature scaling, Platt scaling, isotonic regression, histogram binning\n- **Training-time methods**: Label smoothing, focal loss, confidence penalty, evidential deep learning\n- **Metrics**: ECE, MCE, Brier score, NLL, reliability diagrams\n\n### \u003cimg src=\"website/img/ood_icon.svg\" width=\"40\" height=\"40\" align=\"center\"\u003e **Out-of-Distribution (OOD) Detection**\n- **Score-based methods**: MSP, MaxLogit, Energy, ODIN\n- **Distance-based methods**: Mahalanobis distance, KNN\n- **Training methods**: Mixup, CutMix, Outlier Exposure, Energy regularization\n\n### \u003cimg src=\"website/img/conformal_icon.svg\" width=\"40\" height=\"40\" align=\"center\"\u003e **Conformal Prediction**\n- **Classification**: Inductive CP, APS, RAPS, Mondrian CP\n- **Regression**: Jackknife+, CV+\n- Distribution-free uncertainty quantification with coverage guarantees\n\n### \u003cimg src=\"website/img/sp_icon.svg\" width=\"40\" height=\"40\" align=\"center\"\u003e **Selective Prediction**\n- Confidence thresholding (Softmax Threshold)\n- Self-Adaptive Training (SAT)\n- Deep Gambler, SelectiveNet\n- Risk-coverage tradeoffs\n\n### \u003cimg src=\"website/img/bayesian_icon.svg\" width=\"40\" height=\"40\" align=\"center\"\u003e **Bayesian Deep Learning**\n- **MC Dropout**: Uncertainty via dropout at test time\n- **Deep Ensembles**: Train multiple models for robust predictions\n- **SWAG**: Stochastic Weight Averaging - Gaussian\n- **Laplace Approximation**: Gaussian posterior around MAP estimate\n- **Variational Inference**: Bayes by Backprop\n- **Uncertainty decomposition**: Separate epistemic \u0026 aleatoric uncertainty\n\n### \u003cimg src=\"website/img/shift_icon.svg\" width=\"40\" height=\"40\" align=\"center\"\u003e **Distribution Shift Detection**\n- **Statistical tests**: MMD, Energy distance, Kolmogorov-Smirnov\n- **Classifier-based**: Black-Box Shift Detection (BBSD)\n- **Label shift**: Detect and correct label distribution changes\n- **Importance weighting**: Covariate shift adaptation\n\n### \u003cimg src=\"website/img/llm_icon.svg\" width=\"40\" height=\"40\" align=\"center\"\u003e **LLM Uncertainty**\n- **Token-level**: Entropy, confidence, perplexity, surprisal\n- **Sequence-level**: Sequence probability, average log-prob\n- **Sampling-based**: Self-consistency, semantic entropy, predictive entropy\n- **Generation methods**: Beam search uncertainty, nucleus sampling, contrastive decoding\n\n### \u003cimg src=\"website/img/active_icon.svg\" width=\"40\" height=\"40\" align=\"center\"\u003e **Active Learning**\n- **Acquisition functions**: Entropy, BALD, margin, variance ratio\n- **Query strategies**: Uncertainty sampling, diversity sampling, Core-Set, BADGE\n- **Batch selection**: BatchBALD for efficient batch queries\n- **Committee methods**: Query by Committee (QBC)\n\n### \u003cimg src=\"website/img/data_icon.svg\" width=\"40\" height=\"40\" align=\"center\"\u003e **Data \u0026 Utilities**\n- Built-in datasets (MNIST, CIFAR-10/100, SVHN)\n- OOD benchmark datasets\n- Visualization utilities\n- Common architectures (ConvNet, ResNet)\n\n## 🚀 Installation\n\n### From PyPI\n```bash\npip install incerto\n```\n\nWith optional extras:\n```bash\npip install incerto[vision]   # + torchvision for vision datasets\npip install incerto[llm]      # + transformers, accelerate, sentence-transformers\npip install incerto[all]      # all optional dependencies\n```\n\n### From source\n```bash\ngit clone https://github.com/steverab/incerto.git\ncd incerto\npip install -e .\n```\n\n## 📖 Quick Start\n\n### Calibration\n\n```python\nimport torch\nfrom torch.utils.data import DataLoader\nfrom incerto.calibration import TemperatureScaling, ece_score\n\n# Assume you have a trained model\nmodel = ...  # Your trained classifier\nmodel.eval()\n\n# Collect validation predictions for calibration\nval_logits, val_labels = [], []\nwith torch.no_grad():\n    for x, y in val_loader:\n        logits = model(x)\n        val_logits.append(logits)\n        val_labels.append(y)\n\nval_logits = torch.cat(val_logits)\nval_labels = torch.cat(val_labels)\n\n# Fit temperature scaling on validation set\ncalibrator = TemperatureScaling()\ncalibrator.fit(val_logits, val_labels)\nprint(f\"Learned temperature: {calibrator.temperature.item():.4f}\")\n\n# Apply calibration to test set\ntest_logits, test_labels = [], []\nwith torch.no_grad():\n    for x, y in test_loader:\n        logits = model(x)\n        test_logits.append(logits)\n        test_labels.append(y)\n\ntest_logits = torch.cat(test_logits)\ntest_labels = torch.cat(test_labels)\n\n# Get calibrated logits\ncalibrated_logits = calibrator(test_logits)  # Applies temperature scaling\n\n# Measure calibration improvement\nece_before = ece_score(test_logits, test_labels, n_bins=15)\nece_after = ece_score(calibrated_logits, test_labels, n_bins=15)\nprint(f\"ECE before: {ece_before:.4f} | ECE after: {ece_after:.4f}\")\n```\n\n### OOD Detection\n\n```python\nimport torch\nfrom torch.utils.data import DataLoader\nfrom incerto.ood import Energy, auroc\n\n# Load in-distribution and OOD datasets\nid_loader = DataLoader(cifar10_test, batch_size=128)\nood_loader = DataLoader(svhn_test, batch_size=128)\n\n# Create Energy-based OOD detector\ndetector = Energy(model, temperature=1.0)\n\n# Compute scores (higher = more OOD)\nid_scores = torch.cat([detector.score(x) for x, _ in id_loader])\nood_scores = torch.cat([detector.score(x) for x, _ in ood_loader])\n\n# Evaluate detection performance — auroc takes the two score tensors directly\nauc = auroc(id_scores, ood_scores)\nprint(f\"OOD Detection AUROC: {auc:.4f}\")\n\n# Use detector with threshold\ntest_batch = next(iter(id_loader))[0]\npredictions = detector.predict(test_batch, threshold=-10.0)\nprint(f\"Detected {predictions.sum()} OOD samples\")\n```\n\n### Conformal Prediction\n\n```python\nimport torch\nfrom torch.utils.data import DataLoader\nfrom incerto.conformal import aps\n\n# Calibrate conformal predictor (typically on held-out calibration set)\nalpha = 0.1  # Miscoverage rate (1 - alpha = 90% coverage)\npredictor = aps(model, calib_loader, alpha=alpha)\n\n# Generate prediction sets on test data\nprediction_sets = []\nfor x, y in test_loader:\n    sets = predictor(x)  # List of sets, one per sample\n    prediction_sets.extend(sets)\n\n# Compute coverage and average set size\ncoverage = sum(y_true in pred_set\n               for y_true, pred_set in zip(test_labels, prediction_sets))\ncoverage /= len(test_labels)\n\navg_size = sum(len(s) for s in prediction_sets) / len(prediction_sets)\nprint(f\"Empirical coverage: {coverage:.3f} (target: {1-alpha:.3f})\")\nprint(f\"Average set size: {avg_size:.2f}\")\n```\n\n### Selective Prediction\n\n```python\nimport torch\nfrom incerto.sp import SoftmaxThreshold\n\n# Create selective predictor (wraps your trained model)\nselector = SoftmaxThreshold(model)\nselector.eval()\n\n# Get logits and confidence scores for test data\nall_logits, all_confidences = [], []\nwith torch.no_grad():\n    for x, y in test_loader:\n        logits, conf = selector(x, return_confidence=True)\n        all_logits.append(logits)\n        all_confidences.append(conf)\n\nall_logits = torch.cat(all_logits)\nall_confidences = torch.cat(all_confidences)\npredictions = all_logits.argmax(dim=-1)\n\n# Set confidence threshold (e.g., top 80% most confident)\nthreshold = all_confidences.quantile(0.2)  # Reject bottom 20%\n\n# Evaluate selective accuracy\nselected_mask = all_confidences \u003e= threshold\nselected_acc = (predictions[selected_mask] == test_labels[selected_mask]).float().mean()\ncoverage = selected_mask.float().mean()\n\nprint(f\"Confidence threshold: {threshold:.4f}\")\nprint(f\"Coverage: {coverage:.2%}\")\nprint(f\"Selective accuracy: {selected_acc:.4f}\")\n\n# Reject high-uncertainty samples\nrejected = selector.reject(all_confidences, threshold)\nprint(f\"Rejected samples: {rejected.sum()}/{len(predictions)}\")\n```\n\n### Bayesian Neural Networks\n\n```python\nimport torch\nfrom incerto.bayesian import VariationalBayesNN\n\n# Create Variational Bayesian NN\n# Specify architecture: input_dim, [hidden_sizes], output_dim\nvbnn = VariationalBayesNN(\n    in_features=784,\n    hidden_sizes=[512, 256],\n    out_features=10,\n    prior_std=1.0\n)\n\n# Train with variational loss (likelihood + KL divergence)\noptimizer = torch.optim.Adam(vbnn.parameters(), lr=0.001)\n\nfor epoch in range(10):\n    vbnn.train()\n    for batch_x, batch_y in train_loader:\n        optimizer.zero_grad()\n        # Variational loss with Monte Carlo sampling\n        loss = vbnn.variational_loss(batch_x, batch_y, num_samples=10)\n        loss.backward()\n        optimizer.step()\n\n# Get predictions with variance estimates\nvbnn.eval()\nwith torch.no_grad():\n    mean_pred, variance = vbnn.predict(test_x)\n\nprint(f\"Average predictive variance: {variance.mean():.4f}\")\n\n# Identify high-uncertainty samples\nhigh_unc_mask = variance \u003e variance.quantile(0.9)\nprint(f\"High uncertainty samples: {high_unc_mask.sum()}/{len(test_x)}\")\n```\n\n### Distribution Shift Detection\n\n```python\nimport torch\nfrom torch.utils.data import DataLoader\nfrom incerto.shift import MMDShiftDetector\n\n# Load reference (training) data\nreference_loader = DataLoader(train_dataset, batch_size=128)\n\n# Load production data (potentially shifted)\nproduction_loader = DataLoader(production_dataset, batch_size=128)\n\n# Create MMD shift detector with Gaussian kernel\nmmd_detector = MMDShiftDetector(sigma=1.0)\n\n# Fit on reference distribution\nmmd_detector.fit(reference_loader)\n\n# Compute shift score on production data\nshift_score = mmd_detector.score(production_loader)\nbaseline_score = mmd_detector.score(reference_loader)  # Self-test\n\n# Calculate shift ratio\nshift_ratio = shift_score / (baseline_score + 1e-10)\nprint(f\"MMD shift score: {shift_score:.6f}\")\nprint(f\"Shift ratio: {shift_ratio:.2f}x\")\n\n# Alert based on shift magnitude\nif shift_ratio \u003e 2.0:\n    print(\"⚠️  CRITICAL: Significant distribution shift detected!\")\n    print(\"   Recommendation: Retrain model immediately\")\nelif shift_ratio \u003e 1.5:\n    print(\"⚠️  WARNING: Moderate shift detected\")\n    print(\"   Recommendation: Monitor closely, consider retraining\")\nelse:\n    print(\"✓ No significant shift detected\")\n```\n\n### LLM Uncertainty\n\n```python\nimport torch\nfrom transformers import AutoModelForCausalLM, AutoTokenizer\nfrom sentence_transformers import SentenceTransformer\nfrom incerto.llm import SemanticEntropy, TokenEntropy\n\n# Load language model and embedding model\nmodel = AutoModelForCausalLM.from_pretrained(\"gpt2\")\ntokenizer = AutoTokenizer.from_pretrained(\"gpt2\")\nembedding_model = SentenceTransformer('all-MiniLM-L6-v2')\nmodel.eval()\n\n# Example prompt\nprompt = \"The capital of France is\"\ninputs = tokenizer(prompt, return_tensors=\"pt\")\n\n# --- Token-level uncertainty ---\nwith torch.no_grad():\n    outputs = model(**inputs, return_dict=True)\n    logits = outputs.logits\n\ntoken_entropy = TokenEntropy.compute(logits)\nprint(f\"Average token entropy: {token_entropy.mean():.4f}\")\n\n# --- Semantic Entropy: cluster semantically equivalent responses ---\nnum_samples = 10\nresponses = []\nfor _ in range(num_samples):\n    output_ids = model.generate(\n        **inputs,\n        max_length=50,\n        do_sample=True,\n        temperature=0.8,\n        top_p=0.9,\n        num_return_sequences=1\n    )\n    response = tokenizer.decode(output_ids[0], skip_special_tokens=True)\n    responses.append(response)\n\n# Compute semantic entropy with embedding model\nsemantic_unc = SemanticEntropy.compute(\n    responses,\n    similarity_threshold=0.85,\n    embedding_model=embedding_model\n)\n\nprint(f\"Semantic entropy: {semantic_unc['semantic_entropy']:.4f}\")\nprint(f\"Number of semantic clusters: {semantic_unc['num_clusters']}\")\n\n# High semantic entropy indicates uncertainty\nif semantic_unc['semantic_entropy'] \u003e 1.5:\n    print(\"⚠️  High uncertainty: Model gives diverse semantic answers\")\nelse:\n    print(\"✓ Low uncertainty: Responses are semantically consistent\")\n```\n\n## 📚 Examples\n\nThe `examples/` directory contains Jupyter notebook tutorials covering all major features:\n\n| Notebook | Description |\n|----------|-------------|\n| [01_calibration.ipynb](examples/01_calibration.ipynb) | Post-hoc and training-time calibration methods |\n| [02_ood_detection.ipynb](examples/02_ood_detection.ipynb) | Out-of-distribution detection techniques |\n| [03_selective_prediction.ipynb](examples/03_selective_prediction.ipynb) | Selective classification with reject option |\n| [04_conformal_prediction.ipynb](examples/04_conformal_prediction.ipynb) | Distribution-free prediction sets |\n| [05_bayesian_uncertainty.ipynb](examples/05_bayesian_uncertainty.ipynb) | Bayesian neural networks and uncertainty |\n| [06_active_learning.ipynb](examples/06_active_learning.ipynb) | Query strategies and acquisition functions |\n| [07_shift_detection.ipynb](examples/07_shift_detection.ipynb) | Distribution shift detection methods |\n| [08_llm_uncertainty.ipynb](examples/08_llm_uncertainty.ipynb) | LLM uncertainty quantification |\n\n## 🧪 Testing\n\n**incerto** has comprehensive test coverage (**982 tests**, 100% passing):\n\n```bash\n# Run all tests\npytest\n\n# Run specific module tests\npytest tests/test_calibration/\npytest tests/test_ood/\npytest tests/test_conformal/\npytest tests/test_shift/\npytest tests/test_bayesian/\npytest tests/test_active/\n\n# Run with coverage\npytest --cov=incerto --cov-report=term-missing\n```\n\n## 📊 Supported Methods\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eCalibration Methods\u003c/b\u003e\u003c/summary\u003e\n\n**Post-hoc:**\n- Temperature Scaling\n- Vector Scaling\n- Matrix Scaling\n- Platt Scaling\n- Isotonic Regression\n- Histogram Binning\n- Dirichlet Calibration\n- Beta Calibration\n\n**Training-time:**\n- Label Smoothing\n- Focal Loss\n- Confidence Penalty\n- Evidential Deep Learning\n- Temperature-Aware Training\n\n**Metrics:**\n- Expected Calibration Error (ECE)\n- Maximum Calibration Error (MCE)\n- Classwise ECE\n- Brier Score\n- Negative Log-Likelihood (NLL)\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eOOD Detection Methods\u003c/b\u003e\u003c/summary\u003e\n\n**Score-based:**\n- Maximum Softmax Probability (MSP)\n- MaxLogit\n- Energy Score\n- ODIN\n\n**Distance-based:**\n- Mahalanobis Distance\n- K-Nearest Neighbors (KNN)\n\n**Training-time:**\n- Mixup\n- CutMix\n- Outlier Exposure\n- Energy Regularization\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eConformal Prediction Methods\u003c/b\u003e\u003c/summary\u003e\n\n**Classification:**\n- Inductive Conformal Prediction (ICP)\n- Adaptive Prediction Sets (APS)\n- Regularized APS (RAPS)\n- Mondrian Conformal Prediction\n\n**Regression:**\n- Jackknife+\n- CV+\n- Conformalized Quantile Regression\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eLLM Uncertainty Methods\u003c/b\u003e\u003c/summary\u003e\n\n**Token-level:**\n- Token Entropy\n- Token Confidence\n- Perplexity\n- Surprisal Score\n- Top-K Confidence\n\n**Sequence-level:**\n- Sequence Probability\n- Average Log-Probability\n- Sequence Entropy\n\n**Sampling-based:**\n- Self-Consistency\n- Semantic Entropy\n- Predictive Entropy\n- Mutual Information\n\n**Generation:**\n- Beam Search Uncertainty\n- Nucleus Sampling Uncertainty\n- I Don't Know Detection\n- Contrastive Decoding\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eSelective Prediction Methods\u003c/b\u003e\u003c/summary\u003e\n\n- Softmax Threshold (confidence thresholding)\n- Deep Gambler\n- SelectiveNet\n- Self-Adaptive Training (SAT)\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eBayesian Methods\u003c/b\u003e\u003c/summary\u003e\n\n- MC Dropout\n- Deep Ensembles\n- SWAG (Stochastic Weight Averaging - Gaussian)\n- Laplace Approximation\n- Variational Bayes (Bayes by Backprop)\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eShift Detection Methods\u003c/b\u003e\u003c/summary\u003e\n\n**Statistical:**\n- MMD (Maximum Mean Discrepancy)\n- Energy Distance\n- Kolmogorov-Smirnov Test\n\n**Classifier-based:**\n- Black-Box Shift Detection (BBSD)\n- Label Shift Detection\n- Importance Weighting\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eActive Learning Methods\u003c/b\u003e\u003c/summary\u003e\n\n**Acquisition Functions:**\n- Entropy Sampling\n- BALD (Bayesian Active Learning by Disagreement)\n- Least Confidence\n- Margin Sampling\n- Variance Ratio\n- Mean STD\n- BatchBALD\n\n**Query Strategies:**\n- Uncertainty Sampling\n- Diversity Sampling\n- Core-Set Selection\n- BADGE\n- Query by Committee\n\u003c/details\u003e\n\n## 🤝 Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 📖 Citation\n\nIf you use **incerto** in your research, please cite:\n\n```bibtex\n@software{incerto2025,\n  author = {Rabanser, Stephan},\n  title = {incerto: Uncertainty Quantification for Machine Learning},\n  year = {2025},\n  url = {https://github.com/steverab/incerto},\n  version = {0.1.0}\n}\n```\n\n## 🔗 Links\n\n- **Documentation**: [incerto.dev/docs](https://incerto.dev/docs/)\n- **Website**: [incerto.dev](https://incerto.dev)\n- **Issues**: [GitHub Issues](https://github.com/steverab/incerto/issues)\n\n---\n\n**Status**: Active development | **Version**: 0.1.0 | **Python**: 3.10+\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteverab%2Fincerto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsteverab%2Fincerto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteverab%2Fincerto/lists"}