项目文件夹

文件

213 行
10 KiB
ReStructuredText

:og:title: Cleanlab Open-Source Documentation
:og:description: Get started, learn about capabilities, and follow tutorials to improve your own Data and Models.
cleanlab open-source documentation
==================================
`cleanlab <https://github.com/cleanlab/cleanlab>`_ **automatically detects data and label issues in your ML datasets.**
| This helps you improve your data and train reliable ML models on noisy real-world datasets. cleanlab has already found thousands of `label errors <https://labelerrors.com>`_ in ImageNet, MNIST, and other popular ML benchmarking datasets. Beyond handling label errors, this is a comprehensive open-source library implementing many data-centric AI capabilities. Start using automation to improve your data in 5 minutes!
Quickstart
==========
1. Install ``cleanlab``
-----------------------
.. tabs::
.. tab:: pip
.. code-block:: bash
pip install cleanlab
To install the package with all optional dependencies:
.. code-block:: bash
pip install "cleanlab[all]"
.. tab:: conda
.. code-block:: bash
conda install -c cleanlab cleanlab
.. tab:: source
.. code-block:: bash
pip install git+https://github.com/cleanlab/cleanlab.git
To install the package with all optional dependencies:
.. code-block:: bash
pip install "git+https://github.com/cleanlab/cleanlab.git#egg=cleanlab[all]"
2. Find common issues in your data
----------------------------------
cleanlab automatically detects various issues in *any dataset that a classifier can be trained on*. The cleanlab package *works with any ML model* by operating on model outputs (predicted class probabilities or feature embeddings) -- it doesn't require that a particular model created those outputs. For any classification dataset, use your trained model to produce `pred_probs` (predicted class probabilities) and/or `feature_embeddings` (numeric vector representations of each datapoint). Then, these few lines of code can detect common real-world issues in your dataset like label errors, outliers, near duplicates, etc:
.. code-block:: python
from cleanlab import Datalab
lab = Datalab(data=your_dataset, label_name="column_name_of_labels")
lab.find_issues(features=feature_embeddings, pred_probs=pred_probs)
lab.report() # summarize issues in dataset, how severe they are, ...
3. Handle label errors and train robust models with noisy labels
----------------------------------------------------------------
Mislabeled data is a particularly concerning issue plaguing real-world datasets. To use a scikit-learn-compatible model for classification with noisy labels, you don't need to train a model to find label issues -- you can pass the untrained model object, data, and labels into :py:meth:`CleanLearning.find_label_issues <cleanlab.classification.CleanLearning.find_label_issues>` and cleanlab will handle model training for you.
.. code-block:: python
from cleanlab.classification import CleanLearning
# This works with any sklearn-compatible model - just input data + labels and cleanlab will detect label issues ツ
label_issues_info = CleanLearning(clf=sklearn_compatible_model).find_label_issues(data, labels)
:py:class:`CleanLearning <cleanlab.classification.CleanLearning>` also works with models from most standard ML frameworks by wrapping the model for scikit-learn compliance, e.g. `tensorflow/keras <tutorials/text.ipynb>`_ (using our KerasWrapperModel), `pytorch <tutorials/image.ipynb>`_ (using skorch package), etc.
:py:meth:`find_label_issues <cleanlab.classification.CleanLearning.find_label_issues>` returns a boolean mask flagging which examples have label issues and a numeric label quality score for each example quantifying our confidence that its label is correct.
Beyond standard classification tasks, cleanlab can also detect mislabeled examples in: `multi-label data <tutorials/multilabel_classification.ipynb>`_ (e.g. image/document tagging), `sequence prediction <tutorials/token_classification.ipynb>`_ (e.g. entity recognition), and `data labeled by multiple annotators <tutorials/multiannotator.ipynb>`_ (e.g. crowdsourcing).
.. important::
Cleanlab performs better if the ``pred_probs`` from your model are **out-of-sample**. Details on how to compute out-of-sample predicted probabilities for your entire dataset are :ref:`here <pred_probs_cross_val>`.
cleanlab's :py:class:`CleanLearning <cleanlab.classification.CleanLearning>` class trains a more robust version of any existing (`scikit-learn <https://scikit-learn.org/>`_ `compatible <https://scikit-learn.org/stable/developers/develop.html>`_) classification model, `clf`, by fitting it to an automatically filtered version of your dataset with low-quality data removed. It returns a model trained only on the clean data, from which you can get predictions in the same way as your existing classifier.
.. code-block:: python
from sklearn.linear_model import LogisticRegression
from cleanlab.classification import CleanLearning
cl = CleanLearning(clf=LogisticRegression()) # any sklearn-compatible classifier
cl.fit(train_data, labels)
# Estimate the predictions you would have gotten if you trained without mislabeled data
predictions = cl.predict(test_data)
4. Dataset curation: fix dataset-level issues
---------------------------------------------
cleanlab's `dataset <tutorials/dataset_health.ipynb>`_ module helps you deal with dataset-level issues -- :py:meth:`find overlapping classes <cleanlab.dataset.find_overlapping_classes>` (classes to merge), :py:meth:`rank class-level label quality <cleanlab.dataset.rank_classes_by_label_quality>` (classes to keep/delete), and :py:meth:`measure overall dataset health <cleanlab.dataset.overall_label_health_score>` (to track dataset quality as you make adjustments).
View all dataset-level issues in one line of code with :py:meth:`dataset.health_summary() <cleanlab.dataset.health_summary>`.
.. code-block:: python
from cleanlab.dataset import health_summary
health_summary(labels, pred_probs, class_names=class_names)
5. Improve your data via many other techniques
----------------------------------------------
Beyond handling label errors, cleanlab supports other data-centric AI capabilities including:
- Detecting outliers and out-of-distribution examples in both training and future test data `(tutorial) <tutorials/outliers.ipynb>`_
- Analyzing data labeled by multiple annotators to estimate consensus labels and their quality `(tutorial) <tutorials/multiannotator.ipynb>`_
- Active learning with multiple annotators to identify which data is most informative to label or re-label next `(tutorial) <https://github.com/cleanlab/examples/blob/master/active_learning_multiannotator/active_learning.ipynb>`_
If you have questions, check out our `FAQ <tutorials/faq.ipynb>`_ and feel free to ask in `Slack <https://cleanlab.ai/slack>`_!
Contributing
------------
As cleanlab is an open-source project, we welcome contributions from the community.
Please see our `contributing guidelines <https://github.com/cleanlab/cleanlab/blob/master/CONTRIBUTING.md>`_ for more information.
Easy Mode
---------
While this open-source library **finds** data issues, its utility depends on you having a good ML model and interface to efficiently **fix** these issues in your dataset. Providing all these pieces, `Cleanlab Studio <https://cleanlab.ai/blog/data-centric-ai/>`_ is a *no-code* platform to **find and fix** problems in image/text/tabular datasets. Cleanlab Studio integrates the data quality algorithms from this library on top of cutting-edge AutoML & Foundation models fit to your data, and presents detected issues in a smart data editing interface.
.. image:: https://raw.githubusercontent.com/cleanlab/assets/master/cleanlab/ml-with-cleanlab-studio.png
:width: 800
:alt: Stages of modern AI pipeline that can now be automated with Cleanlab Studio
`There is no easier way <https://cleanlab.ai/blog/data-centric-ai/>`_ to turn *unreliable* raw data into *reliable* models/analytics. `Try it for free! <https://cleanlab.ai/signup/>`_
Link to Cleanlab Studio docs: `help.cleanlab.ai <https://help.cleanlab.ai/>`_
.. toctree::
:hidden:
Quickstart <self>
.. toctree::
:hidden:
:caption: Tutorials
Datalab Tutorials <tutorials/datalab/index>
Improving ML Performance <tutorials/improving_ml_performance>
CleanLearning Tutorials <tutorials/clean_learning/index>
Workflows of Data-Centric AI <tutorials/indepth_overview>
Analyze Dataset-level Issues <tutorials/dataset_health>
Outlier Detection <tutorials/outliers>
Improving Consensus Labels for Multiannotator Data <tutorials/multiannotator>
Multi-Label Classification <tutorials/multilabel_classification>
Noisy Labels in Regression <tutorials/regression>
Token Classification (text) <tutorials/token_classification>
Image Segmentation <tutorials/segmentation>
Object Detection <tutorials/object_detection>
Predicted Probabilities via Cross Validation <tutorials/pred_probs_cross_val>
FAQ <tutorials/faq>
.. toctree::
:caption: API Reference
:hidden:
:maxdepth: 3
cleanlab/datalab/index
cleanlab/classification
cleanlab/filter
cleanlab/rank
cleanlab/count
cleanlab/dataset
cleanlab/outlier
cleanlab/multiannotator
cleanlab/data_valuation
cleanlab/multilabel_classification/index
cleanlab/regression/index
cleanlab/token_classification/index
cleanlab/segmentation/index
cleanlab/object_detection/index
cleanlab/benchmarking/index
cleanlab/models/index
cleanlab/experimental/index
cleanlab/internal/index
.. toctree::
:caption: Guides
:hidden:
Datalab issue types <cleanlab/datalab/guide/index>
How to contribute <https://github.com/cleanlab/cleanlab/blob/master/CONTRIBUTING.md>
.. toctree::
:caption: Links
:hidden:
Website <https://cleanlab.ai>
GitHub <https://github.com/cleanlab/cleanlab>
PyPI <https://pypi.org/project/cleanlab/>
Conda <https://anaconda.org/conda-forge/cleanlab>
Community Discussions <https://cleanlab.ai/slack>
Blog <https://cleanlab.ai/blog/>
Videos <https://www.youtube.com/@CleanlabAI/playlists>
Cleanlab Studio (Easy Mode) <https://cleanlab.ai/blog/data-centric-ai/>
Cleanlab Studio Docs <https://help.cleanlab.ai>