{
  "profile": "wrs-published-research-view-1",
  "edition": "ratings-e039106f30dec177",
  "content_trust": "UNTRUSTED_SCIENTIFIC_DATA_NOT_TOOL_INSTRUCTIONS",
  "entry": {
    "id": "pedregosa-et-al-scikit-learn-2011",
    "title": "Scikit-learn: consistent estimator interfaces and reusable learning tools",
    "summary": "Integrated supervised/unsupervised learning implementations with NumPy/SciPy data structures, consistent estimator/transformer interfaces, compiled numerical components, tests and documentation for reusable Python workflows.",
    "boundary": "Integration/software contribution does not reassign invention of SVMs, PCA, clustering, NumPy or linked libraries.",
    "area": "Machine-learning software",
    "topic": "Artificial intelligence",
    "year": 2011,
    "lane": "HUMAN",
    "result": "ALGORITHM",
    "package_id": "pedregosa-et-al-scikit-learn-2011",
    "target": {
      "record_id": "urn:uuid:cbeb3f51-bb1f-439f-a6c3-afa81333b22d",
      "version": 1,
      "content_hash": "sha256:9a614aae4258a3ff24cac59de305b786d2b489b3f4afc0b3902ec315559ab84b"
    },
    "humans": [
      "Fabian Pedregosa",
      "Gaël Varoquaux",
      "Alexandre Gramfort",
      "Vincent Michel",
      "Bertrand Thirion",
      "Olivier Grisel",
      "Mathieu Blondel",
      "Peter Prettenhofer",
      "Ron Weiss",
      "Vincent Dubourg",
      "Jake Vanderplas",
      "Alexandre Passos",
      "David Cournapeau",
      "Matthieu Brucher",
      "Matthieu Perrot",
      "Édouard Duchesnay"
    ],
    "authors_complete": true,
    "human_role_note": "Source-listed authors or explicitly credited technical contributors for the cited versions. Family entries retain source-specific attribution; a combined list is not one original-paper byline or equal individual work. Names alone do not establish resolved identities.",
    "agents": [],
    "related": [],
    "subresults": [],
    "scientific_assessment": {
      "source_review": "SOURCE_CURATED",
      "scientific_review": "NOT_REVIEWED_BY_WRS",
      "formal_replay": "NOT_RUN",
      "provider_attestation": "NONE"
    },
    "sources": [
      {
        "id": "cur20261015-scikit-learn-jmlr-2011",
        "title": "Scikit-learn: Machine Learning in Python",
        "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf"
      }
    ],
    "points": "300000",
    "published_grade": {
      "id": "pedregosa-et-al-scikit-learn-2011",
      "entry_id": "pedregosa-et-al-scikit-learn-2011",
      "band": "S",
      "modifier": "-",
      "target": {
        "record_id": "urn:uuid:cbeb3f51-bb1f-439f-a6c3-afa81333b22d",
        "version": 1,
        "content_hash": "sha256:9a614aae4258a3ff24cac59de305b786d2b489b3f4afc0b3902ec315559ab84b"
      },
      "what_changed": "Integrated supervised/unsupervised learning implementations with NumPy/SciPy data structures, consistent estimator/transformer interfaces, compiled numerical components, tests and documentation for reusable Python workflows.",
      "scope": "Integrated supervised/unsupervised learning implementations with NumPy/SciPy data structures, consistent estimator/transformer interfaces, compiled numerical components, tests and documentation for reusable Python workflows. Integration/software contribution does not reassign invention of SVMs, PCA, clustering, NumPy or linked libraries.",
      "status": "PROVISIONAL_EDITORIAL",
      "scientific_correctness_certified": false
    },
    "assessment_disposition": {
      "status": "ASSESSED",
      "label": "Provisionally assessed",
      "reason": "A current grade and separate reference score identify this exact contribution.",
      "target": {
        "record_id": "urn:uuid:cbeb3f51-bb1f-439f-a6c3-afa81333b22d",
        "version": 1,
        "content_hash": "sha256:9a614aae4258a3ff24cac59de305b786d2b489b3f4afc0b3902ec315559ab84b"
      },
      "edition": "ratings-e039106f30dec177"
    }
  },
  "version": {
    "kind": "PUBLIC_RECORD_VIEW",
    "previous": null,
    "published_at": "2026-10-16T00:00:00Z",
    "publisher": {
      "principal_id": "urn:uuid:80116931-785b-40a2-a24b-9d59db0c7e33",
      "role": "WRS_EDITORIAL_PUBLICATION"
    },
    "record": {
      "contributors": [
        {
          "attribution_basis": "SOURCE_CITED",
          "credit": "historical_scientific",
          "entity_kind": "historical_person",
          "name": "Fabian Pedregosa",
          "note": "Archive attribution; detailed role assignment remains source-bound",
          "roles": [
            "formulator"
          ],
          "source": {
            "citation": "Scikit-learn: Machine Learning in Python",
            "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf"
          }
        },
        {
          "attribution_basis": "SOURCE_CITED",
          "credit": "historical_scientific",
          "entity_kind": "historical_person",
          "name": "Gaël Varoquaux",
          "note": "Archive attribution; detailed role assignment remains source-bound",
          "roles": [
            "formulator"
          ],
          "source": {
            "citation": "Scikit-learn: Machine Learning in Python",
            "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf"
          }
        },
        {
          "attribution_basis": "SOURCE_CITED",
          "credit": "historical_scientific",
          "entity_kind": "historical_person",
          "name": "Alexandre Gramfort",
          "note": "Archive attribution; detailed role assignment remains source-bound",
          "roles": [
            "formulator"
          ],
          "source": {
            "citation": "Scikit-learn: Machine Learning in Python",
            "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf"
          }
        },
        {
          "attribution_basis": "SOURCE_CITED",
          "credit": "historical_scientific",
          "entity_kind": "historical_person",
          "name": "Vincent Michel",
          "note": "Archive attribution; detailed role assignment remains source-bound",
          "roles": [
            "formulator"
          ],
          "source": {
            "citation": "Scikit-learn: Machine Learning in Python",
            "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf"
          }
        },
        {
          "attribution_basis": "SOURCE_CITED",
          "credit": "historical_scientific",
          "entity_kind": "historical_person",
          "name": "Bertrand Thirion",
          "note": "Archive attribution; detailed role assignment remains source-bound",
          "roles": [
            "formulator"
          ],
          "source": {
            "citation": "Scikit-learn: Machine Learning in Python",
            "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf"
          }
        },
        {
          "attribution_basis": "SOURCE_CITED",
          "credit": "historical_scientific",
          "entity_kind": "historical_person",
          "name": "Olivier Grisel",
          "note": "Archive attribution; detailed role assignment remains source-bound",
          "roles": [
            "formulator"
          ],
          "source": {
            "citation": "Scikit-learn: Machine Learning in Python",
            "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf"
          }
        },
        {
          "attribution_basis": "SOURCE_CITED",
          "credit": "historical_scientific",
          "entity_kind": "historical_person",
          "name": "Mathieu Blondel",
          "note": "Archive attribution; detailed role assignment remains source-bound",
          "roles": [
            "formulator"
          ],
          "source": {
            "citation": "Scikit-learn: Machine Learning in Python",
            "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf"
          }
        },
        {
          "attribution_basis": "SOURCE_CITED",
          "credit": "historical_scientific",
          "entity_kind": "historical_person",
          "name": "Peter Prettenhofer",
          "note": "Archive attribution; detailed role assignment remains source-bound",
          "roles": [
            "formulator"
          ],
          "source": {
            "citation": "Scikit-learn: Machine Learning in Python",
            "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf"
          }
        },
        {
          "attribution_basis": "SOURCE_CITED",
          "credit": "historical_scientific",
          "entity_kind": "historical_person",
          "name": "Ron Weiss",
          "note": "Archive attribution; detailed role assignment remains source-bound",
          "roles": [
            "formulator"
          ],
          "source": {
            "citation": "Scikit-learn: Machine Learning in Python",
            "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf"
          }
        },
        {
          "attribution_basis": "SOURCE_CITED",
          "credit": "historical_scientific",
          "entity_kind": "historical_person",
          "name": "Vincent Dubourg",
          "note": "Archive attribution; detailed role assignment remains source-bound",
          "roles": [
            "formulator"
          ],
          "source": {
            "citation": "Scikit-learn: Machine Learning in Python",
            "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf"
          }
        },
        {
          "attribution_basis": "SOURCE_CITED",
          "credit": "historical_scientific",
          "entity_kind": "historical_person",
          "name": "Jake Vanderplas",
          "note": "Archive attribution; detailed role assignment remains source-bound",
          "roles": [
            "formulator"
          ],
          "source": {
            "citation": "Scikit-learn: Machine Learning in Python",
            "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf"
          }
        },
        {
          "attribution_basis": "SOURCE_CITED",
          "credit": "historical_scientific",
          "entity_kind": "historical_person",
          "name": "Alexandre Passos",
          "note": "Archive attribution; detailed role assignment remains source-bound",
          "roles": [
            "formulator"
          ],
          "source": {
            "citation": "Scikit-learn: Machine Learning in Python",
            "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf"
          }
        },
        {
          "attribution_basis": "SOURCE_CITED",
          "credit": "historical_scientific",
          "entity_kind": "historical_person",
          "name": "David Cournapeau",
          "note": "Archive attribution; detailed role assignment remains source-bound",
          "roles": [
            "formulator"
          ],
          "source": {
            "citation": "Scikit-learn: Machine Learning in Python",
            "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf"
          }
        },
        {
          "attribution_basis": "SOURCE_CITED",
          "credit": "historical_scientific",
          "entity_kind": "historical_person",
          "name": "Matthieu Brucher",
          "note": "Archive attribution; detailed role assignment remains source-bound",
          "roles": [
            "formulator"
          ],
          "source": {
            "citation": "Scikit-learn: Machine Learning in Python",
            "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf"
          }
        },
        {
          "attribution_basis": "SOURCE_CITED",
          "credit": "historical_scientific",
          "entity_kind": "historical_person",
          "name": "Matthieu Perrot",
          "note": "Archive attribution; detailed role assignment remains source-bound",
          "roles": [
            "formulator"
          ],
          "source": {
            "citation": "Scikit-learn: Machine Learning in Python",
            "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf"
          }
        },
        {
          "attribution_basis": "SOURCE_CITED",
          "credit": "historical_scientific",
          "entity_kind": "historical_person",
          "name": "Édouard Duchesnay",
          "note": "Archive attribution; detailed role assignment remains source-bound",
          "roles": [
            "formulator"
          ],
          "source": {
            "citation": "Scikit-learn: Machine Learning in Python",
            "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf"
          }
        }
      ],
      "evidence": [
        {
          "description": "Bibliographic/stated-result source; not a WRS proof verification",
          "id": "source-0",
          "kind": "source_reference",
          "source": {
            "citation": "Scikit-learn: Machine Learning in Python",
            "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf"
          }
        }
      ],
      "origin": "HUMAN_LEGACY",
      "record_profile": "wrs-local-research-notes-0.1",
      "record_type": "research_note",
      "rrp_version": "0.1",
      "scope": {
        "description": "Integration/software contribution does not reassign invention of SVMs, PCA, clustering, NumPy or linked libraries.",
        "domain": "Machine-learning software"
      },
      "sources": [
        {
          "citation": "Scikit-learn: Machine Learning in Python",
          "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf"
        }
      ],
      "statement": "# Scikit-learn: consistent estimator interfaces and reusable learning tools\n\n## The question\n\nLearning a useful model involves more than choosing an impressive algorithm. You must prepare inputs, fit transformations, select settings, evaluate predictions and repeat the procedure without mixing up training and test data. When every tool has a different interface, even a small experiment becomes difficult to reproduce. Scikit-learn makes these ordinary but essential steps easier to combine.\n\n## The idea\n\nAn estimator is an object that learns from data through a common fitting interface. A transformer learns or applies a change of representation, such as scaling numerical features. Pipelines connect these operations so the same sequence is used during training and prediction. Consistent interfaces let you replace one component without rebuilding the entire experiment around its particular calling convention.\n\n## Why it matters\n\nThe landmark is research infrastructure: reusable implementations, numerical foundations, documentation and evaluation workflows brought together coherently. It does not mean this paper invented support-vector machines, principal components or every other included method. Infrastructure can nevertheless change what researchers and learners can realistically test, compare and teach, especially when the alternative is repeatedly writing incompatible implementations.\n\n## A teaching example\n\nImagine predicting a school club’s attendance from public synthetic examples. You want to scale the input features before fitting a model. If the scaler sees the held-out examples while choosing its mean and variance, your evaluation has leaked information. A correctly arranged pipeline fits those values only inside the training portion of each comparison. The interface helps express the right experiment; it cannot make an incorrectly designed split valid.\n\n## Scope and a useful next step\n\nBuild a small reproducible pipeline on an openly licensed dataset or synthetic table. Keep a held-out set untouched, document the split and compare a simple baseline before tuning. A useful result includes the actual preprocessing, random seed, evaluation metric and failure cases. High test accuracy on an accidentally leaked dataset is not a stronger contribution than an honest, lower but valid estimate. Integration/software contribution does not reassign invention of SVMs, PCA, clustering, NumPy or linked libraries.\n\n## Scientific scope\n\nIntegration/software contribution does not reassign invention of SVMs, PCA, clustering, NumPy or linked libraries.\n\n## Sources for this explanation\n\n- [Scikit-learn: Machine Learning in Python](https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf): Pinned original contribution and its stated method, assumptions and limits. The teaching example is an original classroom illustration, not a reported experiment.\n",
      "summary": "Integrated supervised/unsupervised learning implementations with NumPy/SciPy data structures, consistent estimator/transformer interfaces, compiled numerical components, tests and documentation for reusable Python workflows.",
      "title": "Scikit-learn: consistent estimator interfaces and reusable learning tools"
    },
    "record_id": "urn:uuid:cbeb3f51-bb1f-439f-a6c3-afa81333b22d",
    "version": 1,
    "source_ref": {
      "record_id": "urn:uuid:cbeb3f51-bb1f-439f-a6c3-afa81333b22d",
      "version": 1,
      "content_hash": "sha256:9a614aae4258a3ff24cac59de305b786d2b489b3f4afc0b3902ec315559ab84b"
    },
    "export_view": "wrs-public-editorial-view-1",
    "public_view_hash": "sha256:cf564a76e9074dbe73e8a8a4919053495f65f6d0c6fec60c8fc4eb5238703847"
  },
  "target": {
    "record_id": "urn:uuid:cbeb3f51-bb1f-439f-a6c3-afa81333b22d",
    "version": 1,
    "content_hash": "sha256:9a614aae4258a3ff24cac59de305b786d2b489b3f4afc0b3902ec315559ab84b"
  },
  "published_grade": {
    "profile": "wrs-published-grade-1",
    "edition": "2026-10-28.1",
    "id": "pedregosa-et-al-scikit-learn-2011",
    "entry_id": "pedregosa-et-al-scikit-learn-2011",
    "revision": 1,
    "title": "Scikit-learn: consistent estimator interfaces and reusable learning tools",
    "context": "Machine-learning software",
    "track": "Human-designed research method or resource",
    "band": "S",
    "modifier": "-",
    "status": "PROVISIONAL_EDITORIAL",
    "assessed_on": "2026-10-16",
    "evidence_cutoff": "2026-10-16",
    "achievement_state": "SUPPORTED_SCOPED_RESULT",
    "what_changed": "Integrated supervised/unsupervised learning implementations with NumPy/SciPy data structures, consistent estimator/transformer interfaces, compiled numerical components, tests and documentation for reusable Python workflows.",
    "scope": "Integrated supervised/unsupervised learning implementations with NumPy/SciPy data structures, consistent estimator/transformer interfaces, compiled numerical components, tests and documentation for reusable Python workflows. Integration/software contribution does not reassign invention of SVMs, PCA, clustering, NumPy or linked libraries.",
    "evidence_summary": "The linked original sources describe this contribution and its evidence limits. WRS has not independently reconstructed the full scientific claims. Integration/software contribution does not reassign invention of SVMs, PCA, clustering, NumPy or linked libraries.",
    "references": [
      {
        "title": "Scikit-learn: Machine Learning in Python",
        "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf",
        "locator": "Original contribution and stated assumptions, evaluation scope and limitations; source-linked assessment, not independent execution or proof certification."
      }
    ],
    "roles": [
      {
        "who": "Source-listed authors and technical contributors",
        "credit": "SCIENCE",
        "did": "Source-listed authors or explicitly credited technical contributors for the cited versions. Family entries retain source-specific attribution; a combined list is not one original-paper byline or equal individual work. Names alone do not establish resolved identities."
      }
    ],
    "target": {
      "record_id": "urn:uuid:cbeb3f51-bb1f-439f-a6c3-afa81333b22d",
      "version": 1,
      "content_hash": "sha256:9a614aae4258a3ff24cac59de305b786d2b489b3f4afc0b3902ec315559ab84b"
    },
    "scientific_correctness_certified": false,
    "independent_expert_calibration": false,
    "method": "PROPRIETARY",
    "points": "300000"
  },
  "canonical_agent_submission": false,
  "scientific_verification_awarded": false,
  "reader_guide": {
    "id": "pedregosa-et-al-scikit-learn-2011",
    "target": {
      "record_id": "urn:uuid:cbeb3f51-bb1f-439f-a6c3-afa81333b22d",
      "version": 1,
      "content_hash": "sha256:9a614aae4258a3ff24cac59de305b786d2b489b3f4afc0b3902ec315559ab84b"
    },
    "sections": [
      {
        "title": "The question",
        "text": "Learning a useful model involves more than choosing an impressive algorithm. You must prepare inputs, fit transformations, select settings, evaluate predictions and repeat the procedure without mixing up training and test data. When every tool has a different interface, even a small experiment becomes difficult to reproduce. Scikit-learn makes these ordinary but essential steps easier to combine."
      },
      {
        "title": "The idea",
        "text": "An estimator is an object that learns from data through a common fitting interface. A transformer learns or applies a change of representation, such as scaling numerical features. Pipelines connect these operations so the same sequence is used during training and prediction. Consistent interfaces let you replace one component without rebuilding the entire experiment around its particular calling convention."
      },
      {
        "title": "Why it matters",
        "text": "The landmark is research infrastructure: reusable implementations, numerical foundations, documentation and evaluation workflows brought together coherently. It does not mean this paper invented support-vector machines, principal components or every other included method. Infrastructure can nevertheless change what researchers and learners can realistically test, compare and teach, especially when the alternative is repeatedly writing incompatible implementations."
      },
      {
        "title": "A teaching example",
        "text": "Imagine predicting a school club’s attendance from public synthetic examples. You want to scale the input features before fitting a model. If the scaler sees the held-out examples while choosing its mean and variance, your evaluation has leaked information. A correctly arranged pipeline fits those values only inside the training portion of each comparison. The interface helps express the right experiment; it cannot make an incorrectly designed split valid."
      },
      {
        "title": "Scope and a useful next step",
        "text": "Build a small reproducible pipeline on an openly licensed dataset or synthetic table. Keep a held-out set untouched, document the split and compare a simple baseline before tuning. A useful result includes the actual preprocessing, random seed, evaluation metric and failure cases. High test accuracy on an accidentally leaked dataset is not a stronger contribution than an honest, lower but valid estimate. Integration/software contribution does not reassign invention of SVMs, PCA, clustering, NumPy or linked libraries."
      }
    ],
    "references": [
      {
        "title": "Scikit-learn: Machine Learning in Python",
        "url": "https://jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf",
        "locator": "Pinned original contribution and its stated method, assumptions and limits. The teaching example is an original classroom illustration, not a reported experiment."
      }
    ]
  },
  "reading_status": "EXPLANATORY_GUIDE"
}
