커널 밀도 추정을 이용한 밀도 추정

Machine LearningMachine LearningBeginner
지금 연습하기

This tutorial is from open-source community. Access the source code

💡 이 튜토리얼은 영어로 번역되었습니다. 원본을 보려면 영어로 전환

소개

이 실험에서는 랜덤 변수의 확률 밀도 함수를 추정하는 기술인 밀도 추정을 탐구합니다. 구체적으로, 밀도를 추정하는 비모수적 방법인 커널 밀도 추정에 초점을 맞춥니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 연습을 위한 Jupyter Notebook에 접근할 수 있는 Notebook 탭으로 전환합니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.

학습 중 문제가 발생하면 Labby 에 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/neighbors("Nearest Neighbors") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/neighbors -.-> lab-71121{{"커널 밀도 추정을 이용한 밀도 추정"}} ml/sklearn -.-> lab-71121{{"커널 밀도 추정을 이용한 밀도 추정"}} end

필요한 라이브러리 가져오기

먼저, 밀도 추정에 사용할 라이브러리를 가져와야 합니다. sklearn.neighbors 모듈의 KernelDensity 추정기와 데이터 조작을 위한 numpy 라이브러리를 사용합니다.

from sklearn.neighbors import KernelDensity
import numpy as np

샘플 데이터 생성

다음으로, 밀도 추정을 수행하기 위한 샘플 데이터를 생성합니다. 이 실험의 목적을 위해 100 개의 점이 있는 1 차원 데이터 세트를 생성합니다. 정규 분포를 사용하여 데이터를 생성합니다.

np.random.seed(0)
X = np.random.normal(0, 1, 100).reshape(-1, 1)

커널 밀도 추정기 적합

이제 KernelDensity 추정기의 인스턴스를 만들고 데이터에 맞춥니다. 추정기의 커널 유형과 대역폭을 선택할 수 있습니다. 예를 들어, 가우시안 커널을 사용하고 대역폭을 0.2 로 설정할 수 있습니다.

kde = KernelDensity(kernel='gaussian', bandwidth=0.2).fit(X)

샘플 점수 계산

추정기를 맞춘 후 score_samples 메서드를 사용하여 추정된 밀도 함수에 따른 샘플의 로그 가능도를 계산할 수 있습니다. 이를 통해 각 샘플이 밀도 추정에 따라 얼마나 가능성이 높은지에 대한 척도를 얻을 수 있습니다.

scores = kde.score_samples(X)

밀도 추정 시각화

마지막으로, 히스토그램과 추정된 밀도 함수를 사용하여 밀도 추정 결과를 시각화할 수 있습니다. 원본 데이터의 히스토그램과 추정된 밀도 함수를 모두 플롯할 수 있습니다.

import matplotlib.pyplot as plt

bins = np.linspace(-5, 5, 50)
plt.hist(X, bins=bins, density=True, alpha=0.5, label='Histogram')
plt.plot(X, np.exp(scores), color='red', label='Kernel Density Estimate')
plt.legend()
plt.show()

요약

이 실습에서는 scikit-learn 의 KernelDensity 추정기를 사용하여 커널 밀도 추정을 수행하는 방법을 배웠습니다. 커널 밀도 추정은 확률 변수의 확률 밀도 함수를 추정하는 강력한 기술입니다. 데이터 세트에 커널 밀도 추정기를 맞춤으로써 기저 밀도를 추정하고 히스토그램과 추정된 밀도 함수를 사용하여 시각화할 수 있습니다. 이를 통해 데이터의 분포를 이해하고 확률적 예측을 수행할 수 있습니다.

OSZAR »