<!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" /> <meta property="og:title" content="6. Dataset transformations" /> <meta property="og:type" content="website" /> <meta property="og:url" content="https://scikit-learn/stable/data_transforms.html" /> <meta property="og:site_name" content="scikit-learn" /> <meta property="og:description" content="scikit-learn provides a library of transformers, which may clean (see Preprocessing data), reduce (see Unsupervised dimensionality reduction), expand (see Kernel Approximation) or generate (see Fea..." /> <meta property="og:image" content="https://scikit-learn.org/stable/_static/scikit-learn-logo-small.png" /> <meta property="og:image:alt" content="scikit-learn" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>6. Dataset transformations — scikit-learn 1.1.3 documentation</title> <link rel="canonical" href="http://scikit-learn.org/stable/data_transforms.html" /> <link rel="shortcut icon" href="_static/favicon.ico"/> <link rel="stylesheet" href="_static/css/vendor/bootstrap.min.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/plot_directive.css" type="text/css" /> <link rel="stylesheet" href="_static/sg_gallery.css" type="text/css" /> <link rel="stylesheet" href="_static/sg_gallery-binder.css" type="text/css" /> <link rel="stylesheet" href="_static/sg_gallery-dataframe.css" type="text/css" /> <link rel="stylesheet" href="_static/sg_gallery-rendered-html.css" type="text/css" /> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script> <script src="_static/jquery.js"></script> </head> <body> <nav id="navbar" class="sk-docs-navbar navbar navbar-expand-md navbar-light bg-light py-0"> <div class="container-fluid sk-docs-container px-0"> <a class="navbar-brand py-0" href="index.html"> <img class="sk-brand-img" src="_static/scikit-learn-logo-small.png" alt="logo"/> </a> <button id="sk-navbar-toggler" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation" > <span class="navbar-toggler-icon"></span> </button> <div class="sk-navbar-collapse collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav mr-auto"> <li class="nav-item"> <a class="sk-nav-link nav-link" href="install.html">Install</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link" href="user_guide.html">User Guide</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link" href="modules/classes.html">API</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link" href="auto_examples/index.html">Examples</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link" target="_blank" rel="noopener noreferrer" href="https://blog.scikit-learn.org/">Community</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="getting_started.html" >Getting Started</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="tutorial/index.html" >Tutorial</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="whats_new/v1.1.html" >What's new</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="glossary.html" >Glossary</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="https://scikit-learn.org/dev/developers/index.html" target="_blank" rel="noopener noreferrer">Development</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="faq.html" >FAQ</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="support.html" >Support</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="related_projects.html" >Related packages</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="roadmap.html" >Roadmap</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="about.html" >About us</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="https://github.com/scikit-learn/scikit-learn" >GitHub</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="https://scikit-learn.org/dev/versions.html" >Other Versions and Download</a> </li> <li class="nav-item dropdown nav-more-item-dropdown"> <a class="sk-nav-link nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">More</a> <div class="dropdown-menu" aria-labelledby="navbarDropdown"> <a class="sk-nav-dropdown-item dropdown-item" href="getting_started.html" >Getting Started</a> <a class="sk-nav-dropdown-item dropdown-item" href="tutorial/index.html" >Tutorial</a> <a class="sk-nav-dropdown-item dropdown-item" href="whats_new/v1.1.html" >What's new</a> <a class="sk-nav-dropdown-item dropdown-item" href="glossary.html" >Glossary</a> <a class="sk-nav-dropdown-item dropdown-item" href="https://scikit-learn.org/dev/developers/index.html" target="_blank" rel="noopener noreferrer">Development</a> <a class="sk-nav-dropdown-item dropdown-item" href="faq.html" >FAQ</a> <a class="sk-nav-dropdown-item dropdown-item" href="support.html" >Support</a> <a class="sk-nav-dropdown-item dropdown-item" href="related_projects.html" >Related packages</a> <a class="sk-nav-dropdown-item dropdown-item" href="roadmap.html" >Roadmap</a> <a class="sk-nav-dropdown-item dropdown-item" href="about.html" >About us</a> <a class="sk-nav-dropdown-item dropdown-item" href="https://github.com/scikit-learn/scikit-learn" >GitHub</a> <a class="sk-nav-dropdown-item dropdown-item" href="https://scikit-learn.org/dev/versions.html" >Other Versions and Download</a> </div> </li> </ul> <div id="searchbox" role="search"> <div class="searchformwrapper"> <form class="search" action="search.html" method="get"> <input class="sk-search-text-input" type="text" name="q" aria-labelledby="searchlabel" /> <input class="sk-search-text-btn" type="submit" value="Go" /> </form> </div> </div> </div> </div> </nav> <div class="d-flex" id="sk-doc-wrapper"> <input type="checkbox" name="sk-toggle-checkbox" id="sk-toggle-checkbox"> <label id="sk-sidemenu-toggle" class="sk-btn-toggle-toc btn sk-btn-primary" for="sk-toggle-checkbox">Toggle Menu</label> <div id="sk-sidebar-wrapper" class="border-right"> <div class="sk-sidebar-toc-wrapper"> <div class="sk-sidebar-toc-logo"> <a href="index.html"> <img class="sk-brand-img" src="_static/scikit-learn-logo-small.png" alt="logo"/> </a> </div> <div class="btn-group w-100 mb-2" role="group" aria-label="rellinks"> <a href="visualizations.html" role="button" class="btn sk-btn-rellink py-1" sk-rellink-tooltip="5. Visualizations">Prev</a><a href="user_guide.html" role="button" class="btn sk-btn-rellink py-1" sk-rellink-tooltip="User Guide">Up</a> <a href="modules/compose.html" role="button" class="btn sk-btn-rellink py-1" sk-rellink-tooltip="6.1. Pipelines and composite estimators">Next</a> </div> <div class="alert alert-danger p-1 mb-2" role="alert"> <p class="text-center mb-0"> <strong>scikit-learn 1.1.3</strong><br/> <a href="http://scikit-learn.org/dev/versions.html">Other versions</a> </p> </div> <div class="alert alert-warning p-1 mb-2" role="alert"> <p class="text-center mb-0"> Please <a class="font-weight-bold" href="about.html#citing-scikit-learn"><string>cite us</string></a> if you use the software. </p> </div> <div class="sk-sidebar-toc"> <ul> <li> <a href="user_guide.html" class="sk-toc-active">User Guide</a> </li> <ul> <li> <a href="supervised_learning.html" class="">1. Supervised learning</a> </li> <li> <a href="unsupervised_learning.html" class="">2. Unsupervised learning</a> </li> <li> <a href="model_selection.html" class="">3. Model selection and evaluation</a> </li> <li> <a href="inspection.html" class="">4. Inspection</a> </li> <li> <a href="visualizations.html" class="">5. Visualizations</a> </li> <li> <a href="" class="sk-toc-active">6. Dataset transformations</a> <ul> <li class="sk-toctree-l3"> <a href="modules/compose.html">6.1. Pipelines and composite estimators</a> </li> <li class="sk-toctree-l3"> <a href="modules/feature_extraction.html">6.2. Feature extraction</a> </li> <li class="sk-toctree-l3"> <a href="modules/preprocessing.html">6.3. Preprocessing data</a> </li> <li class="sk-toctree-l3"> <a href="modules/impute.html">6.4. Imputation of missing values</a> </li> <li class="sk-toctree-l3"> <a href="modules/unsupervised_reduction.html">6.5. Unsupervised dimensionality reduction</a> </li> <li class="sk-toctree-l3"> <a href="modules/random_projection.html">6.6. Random Projection</a> </li> <li class="sk-toctree-l3"> <a href="modules/kernel_approximation.html">6.7. Kernel Approximation</a> </li> <li class="sk-toctree-l3"> <a href="modules/metrics.html">6.8. Pairwise metrics, Affinities and Kernels</a> </li> <li class="sk-toctree-l3"> <a href="modules/preprocessing_targets.html">6.9. Transforming the prediction target (y)</a> </li> </ul> </li> <li> <a href="datasets.html" class="">7. Dataset loading utilities</a> </li> <li> <a href="computing.html" class="">8. Computing with scikit-learn</a> </li> <li> <a href="model_persistence.html" class="">9. Model persistence</a> </li> <li> <a href="common_pitfalls.html" class="">10. Common pitfalls and recommended practices</a> </li> </ul> </ul> </div> </div> </div> <div id="sk-page-content-wrapper"> <div class="sk-page-content container-fluid body px-md-3" role="main"> <style type="text/css"> div.body div.toctree-wrapper ul { padding-left: 0; } div.body li.toctree-l1 { padding: 0 0 0.5em 0; list-style-type: none; font-size: 150%; font-weight: bold; } div.body li.toctree-l2 { font-size: 70%; list-style-type: square; font-weight: normal; margin-left: 40px; } div.body li.toctree-l3 { font-size: 85%; list-style-type: circle; font-weight: normal; margin-left: 40px; } div.body li.toctree-l4 { margin-left: 40px; } </style><section id="dataset-transformations"> <span id="data-transforms"></span><h1><span class="section-number">6. </span>Dataset transformations<a class="headerlink" href="#dataset-transformations" title="Permalink to this heading">¶</a></h1> <p>scikit-learn provides a library of transformers, which may clean (see <a class="reference internal" href="modules/preprocessing.html#preprocessing"><span class="std std-ref">Preprocessing data</span></a>), reduce (see <a class="reference internal" href="modules/unsupervised_reduction.html#data-reduction"><span class="std std-ref">Unsupervised dimensionality reduction</span></a>), expand (see <a class="reference internal" href="modules/kernel_approximation.html#kernel-approximation"><span class="std std-ref">Kernel Approximation</span></a>) or generate (see <a class="reference internal" href="modules/feature_extraction.html#feature-extraction"><span class="std std-ref">Feature extraction</span></a>) feature representations.</p> <p>Like other estimators, these are represented by classes with a <code class="docutils literal notranslate"><span class="pre">fit</span></code> method, which learns model parameters (e.g. mean and standard deviation for normalization) from a training set, and a <code class="docutils literal notranslate"><span class="pre">transform</span></code> method which applies this transformation model to unseen data. <code class="docutils literal notranslate"><span class="pre">fit_transform</span></code> may be more convenient and efficient for modelling and transforming the training data simultaneously.</p> <p>Combining such transformers, either in parallel or series is covered in <a class="reference internal" href="modules/compose.html#combining-estimators"><span class="std std-ref">Pipelines and composite estimators</span></a>. <a class="reference internal" href="modules/metrics.html#metrics"><span class="std std-ref">Pairwise metrics, Affinities and Kernels</span></a> covers transforming feature spaces into affinity matrices, while <a class="reference internal" href="modules/preprocessing_targets.html#preprocessing-targets"><span class="std std-ref">Transforming the prediction target (y)</span></a> considers transformations of the target space (e.g. categorical labels) for use in scikit-learn.</p> <div class="toctree-wrapper compound"> <ul> <li class="toctree-l1"><a class="reference internal" href="modules/compose.html">6.1. Pipelines and composite estimators</a><ul> <li class="toctree-l2"><a class="reference internal" href="modules/compose.html#pipeline-chaining-estimators">6.1.1. Pipeline: chaining estimators</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/compose.html#transforming-target-in-regression">6.1.2. Transforming target in regression</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/compose.html#featureunion-composite-feature-spaces">6.1.3. FeatureUnion: composite feature spaces</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/compose.html#columntransformer-for-heterogeneous-data">6.1.4. ColumnTransformer for heterogeneous data</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/compose.html#visualizing-composite-estimators">6.1.5. Visualizing Composite Estimators</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="modules/feature_extraction.html">6.2. Feature extraction</a><ul> <li class="toctree-l2"><a class="reference internal" href="modules/feature_extraction.html#loading-features-from-dicts">6.2.1. Loading features from dicts</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/feature_extraction.html#feature-hashing">6.2.2. Feature hashing</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/feature_extraction.html#text-feature-extraction">6.2.3. Text feature extraction</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/feature_extraction.html#image-feature-extraction">6.2.4. Image feature extraction</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="modules/preprocessing.html">6.3. Preprocessing data</a><ul> <li class="toctree-l2"><a class="reference internal" href="modules/preprocessing.html#standardization-or-mean-removal-and-variance-scaling">6.3.1. Standardization, or mean removal and variance scaling</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/preprocessing.html#non-linear-transformation">6.3.2. Non-linear transformation</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/preprocessing.html#normalization">6.3.3. Normalization</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/preprocessing.html#encoding-categorical-features">6.3.4. Encoding categorical features</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/preprocessing.html#discretization">6.3.5. Discretization</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/preprocessing.html#imputation-of-missing-values">6.3.6. Imputation of missing values</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/preprocessing.html#generating-polynomial-features">6.3.7. Generating polynomial features</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/preprocessing.html#custom-transformers">6.3.8. Custom transformers</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="modules/impute.html">6.4. Imputation of missing values</a><ul> <li class="toctree-l2"><a class="reference internal" href="modules/impute.html#univariate-vs-multivariate-imputation">6.4.1. Univariate vs. Multivariate Imputation</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/impute.html#univariate-feature-imputation">6.4.2. Univariate feature imputation</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/impute.html#multivariate-feature-imputation">6.4.3. Multivariate feature imputation</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/impute.html#references">6.4.4. References</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/impute.html#nearest-neighbors-imputation">6.4.5. Nearest neighbors imputation</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/impute.html#marking-imputed-values">6.4.6. Marking imputed values</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/impute.html#estimators-that-handle-nan-values">6.4.7. Estimators that handle NaN values</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="modules/unsupervised_reduction.html">6.5. Unsupervised dimensionality reduction</a><ul> <li class="toctree-l2"><a class="reference internal" href="modules/unsupervised_reduction.html#pca-principal-component-analysis">6.5.1. PCA: principal component analysis</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/unsupervised_reduction.html#random-projections">6.5.2. Random projections</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/unsupervised_reduction.html#feature-agglomeration">6.5.3. Feature agglomeration</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="modules/random_projection.html">6.6. Random Projection</a><ul> <li class="toctree-l2"><a class="reference internal" href="modules/random_projection.html#the-johnson-lindenstrauss-lemma">6.6.1. The Johnson-Lindenstrauss lemma</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/random_projection.html#gaussian-random-projection">6.6.2. Gaussian random projection</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/random_projection.html#sparse-random-projection">6.6.3. Sparse random projection</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/random_projection.html#inverse-transform">6.6.4. Inverse Transform</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="modules/kernel_approximation.html">6.7. Kernel Approximation</a><ul> <li class="toctree-l2"><a class="reference internal" href="modules/kernel_approximation.html#nystroem-method-for-kernel-approximation">6.7.1. Nystroem Method for Kernel Approximation</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/kernel_approximation.html#radial-basis-function-kernel">6.7.2. Radial Basis Function Kernel</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/kernel_approximation.html#additive-chi-squared-kernel">6.7.3. Additive Chi Squared Kernel</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/kernel_approximation.html#skewed-chi-squared-kernel">6.7.4. Skewed Chi Squared Kernel</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/kernel_approximation.html#polynomial-kernel-approximation-via-tensor-sketch">6.7.5. Polynomial Kernel Approximation via Tensor Sketch</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/kernel_approximation.html#mathematical-details">6.7.6. Mathematical Details</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="modules/metrics.html">6.8. Pairwise metrics, Affinities and Kernels</a><ul> <li class="toctree-l2"><a class="reference internal" href="modules/metrics.html#cosine-similarity">6.8.1. Cosine similarity</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/metrics.html#linear-kernel">6.8.2. Linear kernel</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/metrics.html#polynomial-kernel">6.8.3. Polynomial kernel</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/metrics.html#sigmoid-kernel">6.8.4. Sigmoid kernel</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/metrics.html#rbf-kernel">6.8.5. RBF kernel</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/metrics.html#laplacian-kernel">6.8.6. Laplacian kernel</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/metrics.html#chi-squared-kernel">6.8.7. Chi-squared kernel</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="modules/preprocessing_targets.html">6.9. Transforming the prediction target (<code class="docutils literal notranslate"><span class="pre">y</span></code>)</a><ul> <li class="toctree-l2"><a class="reference internal" href="modules/preprocessing_targets.html#label-binarization">6.9.1. Label binarization</a></li> <li class="toctree-l2"><a class="reference internal" href="modules/preprocessing_targets.html#label-encoding">6.9.2. Label encoding</a></li> </ul> </li> </ul> </div> </section> </div> <div class="container"> <footer class="sk-content-footer"> © 2007 - 2022, scikit-learn developers (BSD License). <a href="_sources/data_transforms.rst.txt" rel="nofollow">Show this page source</a> </footer> </div> </div> </div> <script src="_static/js/vendor/bootstrap.min.js"></script> <script> window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; ga('create', 'UA-22606712-2', 'auto'); ga('set', 'anonymizeIp', true); ga('send', 'pageview'); </script> <script async src='https://www.google-analytics.com/analytics.js'></script> <script> $(document).ready(function() { /* Add a [>>>] button on the top-right corner of code samples to hide * the >>> and ... prompts and the output and thus make the code * copyable. */ var div = $('.highlight-python .highlight,' + '.highlight-python3 .highlight,' + '.highlight-pycon .highlight,' + '.highlight-default .highlight') var pre = div.find('pre'); // get the styles from the current theme pre.parent().parent().css('position', 'relative'); var hide_text = 'Hide prompts and outputs'; var show_text = 'Show prompts and outputs'; // create and add the button to all the code blocks that contain >>> div.each(function(index) { var jthis = $(this); if (jthis.find('.gp').length > 0) { var button = $('<span class="copybutton">>>></span>'); button.attr('title', hide_text); button.data('hidden', 'false'); jthis.prepend(button); } // tracebacks (.gt) contain bare text elements that need to be // wrapped in a span to work with .nextUntil() (see later) jthis.find('pre:has(.gt)').contents().filter(function() { return ((this.nodeType == 3) && (this.data.trim().length > 0)); }).wrap('<span>'); }); // define the behavior of the button when it's clicked $('.copybutton').click(function(e){ e.preventDefault(); var button = $(this); if (button.data('hidden') === 'false') { // hide the code output button.parent().find('.go, .gp, .gt').hide(); button.next('pre').find('.gt').nextUntil('.gp, .go').css('visibility', 'hidden'); button.css('text-decoration', 'line-through'); button.attr('title', show_text); button.data('hidden', 'true'); } else { // show the code output button.parent().find('.go, .gp, .gt').show(); button.next('pre').find('.gt').nextUntil('.gp, .go').css('visibility', 'visible'); button.css('text-decoration', 'none'); button.attr('title', hide_text); button.data('hidden', 'false'); } }); /*** Add permalink buttons next to glossary terms ***/ $('dl.glossary > dt[id]').append(function() { return ('<a class="headerlink" href="#' + this.getAttribute('id') + '" title="Permalink to this term">¶</a>'); }); /*** Hide navbar when scrolling down ***/ // Returns true when headerlink target matches hash in url (function() { hashTargetOnTop = function() { var hash = window.location.hash; if ( hash.length < 2 ) { return false; } var target = document.getElementById( hash.slice(1) ); if ( target === null ) { return false; } var top = target.getBoundingClientRect().top; return (top < 2) && (top > -2); }; // Hide navbar on load if hash target is on top var navBar = document.getElementById("navbar"); var navBarToggler = document.getElementById("sk-navbar-toggler"); var navBarHeightHidden = "-" + navBar.getBoundingClientRect().height + "px"; var $window = $(window); hideNavBar = function() { navBar.style.top = navBarHeightHidden; }; showNavBar = function() { navBar.style.top = "0"; } if (hashTargetOnTop()) { hideNavBar() } var prevScrollpos = window.pageYOffset; hideOnScroll = function(lastScrollTop) { if (($window.width() < 768) && (navBarToggler.getAttribute("aria-expanded") === 'true')) { return; } if (lastScrollTop > 2 && (prevScrollpos <= lastScrollTop) || hashTargetOnTop()){ hideNavBar() } else { showNavBar() } prevScrollpos = lastScrollTop; }; /*** high performance scroll event listener***/ var raf = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame; var lastScrollTop = $window.scrollTop(); if (raf) { loop(); } function loop() { var scrollTop = $window.scrollTop(); if (lastScrollTop === scrollTop) { raf(loop); return; } else { lastScrollTop = scrollTop; hideOnScroll(lastScrollTop); raf(loop); } } })(); }); </script> <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script> <script src="https://scikit-learn.org/versionwarning.js"></script> </body> </html>