カーネル密度を用いた密度推定

Machine LearningMachine LearningBeginner
今すぐ練習

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

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、確率密度関数を推定するために使用される手法である密度推定を検討します。具体的には、密度を推定する非パラメトリック手法であるカーネル密度推定に焦点を当てます。

VMのヒント

VMの起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter 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推定器を使ってカーネル密度推定を行う方法を学びました。カーネル密度推定は、確率変数の確率密度関数を推定するための強力な手法です。データセットにカーネル密度推定器をフィットさせることで、潜在的な密度を推定し、ヒストグラムと推定された密度関数を使って可視化することができます。これにより、データの分布を理解し、確率的な予測を行うことができます。