scikit-learn(이전 명칭: scikits.learn, sklearn으로도 알려짐)은 Python 프로그래밍 언어를 위한 무료 오픈소스 기계 학습 라이브러리이다. 서포트 벡터 머신, 랜덤 포레스트, 그래디언트 부스팅, k-평균, DBSCAN을 포함한 다양한 분류, 회귀, 클러스터링 알고리즘을 제공하며, Python 수치 및 과학 라이브러리인 NumPy와 SciPy와 상호 운용되도록 설계되었다. 이 프로젝트는 NumFOCUS의 재정 후원 프로젝트이며, 특히 고전적(비딥러닝) 학습 작업에서 전 세계에서 가장 널리 채택된 기계 학습 프레임워크 중 하나이다.
이 라이브러리는 예측 모델을 구축하고 평가하기 위한 일관된 인터페이스를 제공하여 기계 학습의 일반적인 진입점이 된다. API 설계는 estimator.fit() 및 estimator.predict() 메서드를 중심으로 하여 사용자가 최소한의 코드 변경으로 알고리즘을 전환할 수 있게 한다.
역사
이 프로젝트는 2007년 프랑스 데이터 과학자 David Cournapeau가 시작한 Google Summer of Code 이니셔티브인 scikits.learn으로 시작되었다. 이름은 기계 학습을 위한 과학적 툴킷이라는 역할에서 유래했으며, 원래 SciPy의 타사 확장으로 배포되었다. 2010년, 프랑스 국립 컴퓨터 과학 및 자동화 연구소(INRIA) Saclay 소속 기여자 Fabian Pedregosa, Gaël Varoquaux, Alexandre Gramfort, Vincent Michel이 주도권을 잡아 2010년 2월 1일 첫 공개 버전을 출시했다.
이 프로젝트는 NumFOCUS 후원 프로젝트가 되었으며 2019년까지 1,400명 이상의 기여자를 확보했고, 2018년 문서화는 4,200만 건의 방문을 기록했다. 2022년 173개국 약 24,000명의 응답자를 대상으로 한 Kaggle 설문 조사에서는 가장 널리 사용되는 기계 학습 프레임워크로 확인되었다. 첫 안정 버전인 1.0.0은 2,100건 이상의 병합된 풀 리퀘스트를 거쳐 2021년 9월 24일에 출시되었다.
구현 및 설계
scikit-learn은 주로 Python으로 작성되었으며 고성능 선형 대수를 위해 NumPy에 의존한다. 일부 핵심 알고리즘은 속도를 위해 Cython으로 구현된다. 서포트 벡터 머신은 LIBSVM 주변의 Cython 래퍼를 사용하며, 로지스틱 회귀와 선형 서포트 벡터 머신은 LIBLINEAR 주변의 유사한 래퍼를 사용한다. SciPy, Pandas, Matplotlib, plotly를 포함한 Python 과학 스택과 상호 운용된다.
이 라이브러리는 일관된 추정기 인터페이스를 제공한다. fit()은 모델을 훈련하고 predict()는 출력을 생성한다. 또한 훈련-테스트 분할, 교차 검증, 그리드 검색과 같은 일반적인 데이터 과학 작업을 위한 유틸리티와 데이터 전처리 및 모델 피팅 워크플로우를 선언적으로 구조화하기 위한 Pipeline 메커니즘을 제공한다.
2025년 12월 10일에 출시된 최신 버전 1.8은 기본 Array API 지원을 추가하여 PyTorch 및 CuPy 배열을 통해 직접 GPU 계산을 가능하게 했다. 이 릴리스는 또한 선형 모델 피팅 효율성을 개선했다.
알고리즘 및 기능
scikit-learn은 분류, 회귀, 클러스터링을 위한 광범위한 검증된 알고리즘 카탈로그를 포함한다. 여기에는 서포트 벡터 머신, 랜덤 포레스트, 그래디언트 부스팅, k-평균, DBSCAN이 포함된다. 추정기 전반에 걸쳐 일관된 메서드를 제공한다. 훈련을 위한 fit()과 추론을 위한 predict()이며, XGBoost 및 LightGBM과 같은 라이브러리도 이 방식을 채택했다.
이 라이브러리는 또한 데이터를 훈련 세트와 테스트 세트로 분할, 교차 검증, 그리드 검색을 포함한 일반적인 데이터 과학 작업을 위한 유틸리티 메서드를 제공한다. Pipeline 클래스는 전처리 단계와 모델 피팅을 결합하여 데이터 과학 워크플로우를 선언적으로 구조화할 수 있게 한다.
주요 알고리즘 및 통합
서포트 벡터 머신은 LIBSVM 주변의 Cython 래퍼를 통해 구현되며, 로지스틱 회귀와 선형 서포트 벡터 머신은 LIBLINEAR 주변의 유사한 래퍼를 사용한다. 이 라이브러리는 시각화를 위한 Matplotlib 및 Plotly, 데이터 조작을 위한 pandas, 과학 컴퓨팅을 위한 SciPy를 포함한 다른 Python 도구와 통합된다.
실제 배포에서 scikit-learn은 데이터 처리를 위해 Pandas 및 Numpy와 함께 사용되는 경우가 많다.