scikit-learn main repo
Switch branches/tags
0.6.X 0.7.X 0.10.X 0.12.X 0.13.X 0.15.X 0.16.X 0.17.X-blub 0.17.X-examples 0.17.X 0.18.X 0.18.2-branch 0.18.2 0.19.X 0.20postrc_again 0.20.2-actual actually_test_docstrings agglomerative_deprecation almost_equal_cosine alternate-logo asdf assert_fix_validation backward_compatibility_fix_permutation_score bagging_metaestimator_decision_function_delegation benchmarking_reassignment betaworks_testimonial bicluster_api_fix blub2 booking_testimonial bunch_autocomplete check_pickle_deprecation chunked_distances_diagonal ci_test columbia_logo columntransformer-example-simplify count_vectorizer_speed coverage_newest cython_beta cython_warnings davidmarek_gsoc_mlp dbgmm_doc dbscan_faq_brute dbscan_rebase debian decision_function_plotting deprecations_019 deprecations_21_sgd_tol disable_cca_transformer_test doc_fixes_again doc_header_0.16 docstring_error_message doi_badge dont_change_fitparams_in_init dpgmm_fix_sampling dpgmm_gamma_update_fix dpgmm_priors dpgmm_warning drop_legacy_python dummy_2d_fix elkan_backup elkan_kmeans elkan2 elliptic_attribute_doc_fix eval_to_score_samples_rename even_more_explicit_common_test_names examples_deprecations examples_fixes factor_analysis feature_agglomeration_deprecation_fix figure_improvements fix_clone_omg fix_mutual_info_cython fix_ravel_stuff fix_test_coverage fix_whatsnew_link flexible_score fortran_c_order_test gaussiannb_warning_mask_misshape gradient_boosting_staged_yields grid_search_convenience grid_search_more_info heterogeneous_feature_union highlights_0.16 hyperplane_example_fixup iid_mehss iid_warning instance_level_tests joblib_tests joblib_trees kernel_wat kmeans_example kmeans_iterations kneighbors_warning label_binarizer_classes lasso_coef_plot lbfgs_default lbfgs_rename_fix lda_qda_cleanup lda_verbosity ledoit_wolf_fix libsvm_Debugging_omg_never_again linearsvr_y_writeable log1p logisticregressioncv_whoops master matplotlib_hold_deprecated matplotlib_tree_plotting mds_proximity meta_check_estimator metrics_testing micro_accuracy min_impurity_split_deprecation minibatch_reassignment_fixes minor_doc_fixes missing_whitespace_warning mlp_refactoring mnist_filter_255 model_persistance_whatsnew more_repr moved_datasets_doc multi-output-label-dtype multiclass_roc_auc multilabel-splitter-test multilabel_tree multilayer_perceptron multinomial_sgd multioutput_partial_fit my_feature_branch naive_bayes_parametrization nd_input_testing_cross_validation neighbors_weighting_special_case news nextafter nice_class_name nmf_random_init_scaling no-legacy-python no_np_random_integers number_samples_error_message numpy_dev_build numpy13_travis numpydoc_upstream_copy numpydoc_upstream nystroem_k_means nystroem_params one_hot_encoder_docstring_fix onehot_deprecation_n_values openml_doc_link openml_loader optics_func_import outlier_float_equal ovr_classifier_fixes ovr_cleanup pandas_check_array_series parametrize_tests_partial_names pdf_doc_build pickle_test_more_stable pickle_warning pip_installable pipeline_get_feature_names pipeline_list_modification pipeline_y plot_confusion_matrix plot_stock_market_fixes_27_numpy_etc plot_tree_doc_fix pos_label_str power_iteration_warning pr/1586 pr/3204 predict_1d py3k pytest_doctests python3.3 python26_no_more randomized_parameter_search ransac_example_cleanup ravel_warning redo_website_again regression_tree_criterion related_projects_pmml related_projects release_changes_018 repr_fixes repr_give_up repr_pprint reseting_estimator_from_model return_train_score_deprecation review_guide rewrite_install_linux rfecv_testing rm_sphinx_gallery roll_own_estimator_doc sag_scaling sample_properties sample_splits_form_data sgd_max_iter_deprecation sgdclassifier_warning simple_deprecations_021 simple_repr simpleimputer_bagging single_feature_X skopt_related sloan_footer solido_testimonial some_better_test_failure_messages sorted_param_setting sparse_randomized_l1 sparse_threshold_always spelling sphinx_fix_42 sphinx_fixes_again sphinx_fixes sphinx_version_bump style_errors svc_callable_kernel_decision_function svc_coef_attribute svm_bench_shogun svm_remove_labels tags_backup tags targettransformer test_dtypes_all test_dtypes test_names_gp_kernels test_output_fixes test_warnings thank_you_20 thread_safe topn_slow_tests_makefile underline_syntax_sphinx version_bump_018 versionadded_rebase votingclassifier_transform_deprecation website_changes weird_travis_stuff whatsnew_master_fixes whatsnew_minor whatsnew_union
Nothing to show
Clone or download
Pull request Compare This branch is 1 commit ahead, 504 commits behind scikit-learn:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci MAINT: Deploy doc even if broken on Python2 (scikit-learn#11529) Jul 15, 2018
benchmarks Restructure access to vendored/site Joblib (scikit-learn#11471) Jul 17, 2018
build_tools Restructure access to vendored/site Joblib (scikit-learn#11471) Jul 17, 2018
doc MAINT: Revert ChainedImputer (scikit-learn#11600) Jul 17, 2018
examples [MRG] Fix and plot_discretization_classification.… Jul 17, 2018
sklearn pep8 whoops Jul 17, 2018
.codecov.yml Turn off codecov comments (scikit-learn#10146) Nov 15, 2017
.coveragerc coverall added Oct 8, 2013
.gitattributes MAINT remove .c files from .gitattributes Nov 21, 2016
.gitignore MAINT Complete 0.20 deprecations (scikit-learn#9570) Jun 24, 2018
.landscape.yml make much more useful Mar 10, 2015
.mailmap Fix mailmap format (scikit-learn#9620) Aug 24, 2017
.travis.yml Restructure access to vendored/site Joblib (scikit-learn#11471) Jul 17, 2018
AUTHORS.rst DOC mention new maintainers in AUTHORS.rst (scikit-learn#11491) Jul 13, 2018 DOC Link to dev doc in Mar 29, 2018
COPYING MAINT Update copyright year 2018 (scikit-learn#10456) Jan 11, 2018 add python parameter to issue template for better code rendering Apr 14, 2017 MAINT Include binary_tree.pxi in source distribution Jul 4, 2014
Makefile [MRG] fix command for make test-coverage (scikit-learn#10188) Nov 23, 2017 DOC Encourage contributors to use keywords to close issue automatical… Oct 20, 2017
README.rst add warning about Python2.7 support drop (scikit-learn#11545) Jul 17, 2018
appveyor.yml Workaround for skipping outdated builds with Appveyor (scikit-learn#1… Jul 17, 2018 TST: only run doctests on numpy 1.14. (scikit-learn#10835) Mar 27, 2018
setup.cfg raise DeprecationWarnings and FutureWarnings as errors (scikit-learn#… Jul 17, 2018 MAINT Use install_requires for numpy and scipy (scikit-learn#10402) Jan 14, 2018
site.cfg Remove obsolete info. Feb 8, 2011


Travis AppVeyor Codecov CircleCI Python27 Python35 PyPi DOI


scikit-learn is a Python module for machine learning built on top of SciPy and distributed under the 3-Clause BSD license.

The project was started in 2007 by David Cournapeau as a Google Summer of Code project, and since then many volunteers have contributed. See the AUTHORS.rst file for a complete list of contributors.

It is currently maintained by a team of volunteers.




scikit-learn requires:

  • Python (>= 2.7 or >= 3.4)
  • NumPy (>= 1.8.2)
  • SciPy (>= 0.13.3)

Scikit-learn 0.20 is the last version to support Python2.7. Scikit-learn 0.21 and later will require Python 3.5 or newer.

For running the examples Matplotlib >= 1.3.1 is required. A few examples require scikit-image >= 0.9.3 and a few examples require pandas >= 0.13.1.

scikit-learn also uses CBLAS, the C interface to the Basic Linear Algebra Subprograms library. scikit-learn comes with a reference implementation, but the system CBLAS will be detected by the build system and used if present. CBLAS exists in many implementations; see Linear algebra libraries for known issues.

User installation

If you already have a working installation of numpy and scipy, the easiest way to install scikit-learn is using pip

pip install -U scikit-learn

or conda:

conda install scikit-learn

The documentation includes more detailed installation instructions.


See the changelog for a history of notable changes to scikit-learn.


We welcome new contributors of all experience levels. The scikit-learn community goals are to be helpful, welcoming, and effective. The Development Guide has detailed information about contributing code, documentation, tests, and more. We've included some basic information in this README.

Important links

Source code

You can check the latest sources with the command:

git clone

Setting up a development environment

Quick tutorial on how to go about setting up your environment to contribute to scikit-learn:


After installation, you can launch the test suite from outside the source directory (you will need to have the pytest package installed):

pytest sklearn

See the web page for more information.

Random number generation can be controlled during testing by setting the SKLEARN_SEED environment variable.

Submitting a Pull Request

Before opening a Pull Request, have a look at the full Contributing page to make sure your code complies with our guidelines:

Project History

The project was started in 2007 by David Cournapeau as a Google Summer of Code project, and since then many volunteers have contributed. See the AUTHORS.rst file for a complete list of contributors.

The project is currently maintained by a team of volunteers.

Note: scikit-learn was previously referred to as scikits.learn.

Help and Support




If you use scikit-learn in a scientific publication, we would appreciate citations: