ゆうき( @BASEBALLY15 )です^^

Pythonで,データ分析の勉強をし始めて,『カーネル密度推定』というのが出てきたのですが,よく分からないです・・・

カーネル密度推定 』は,データ分析を行う上で,重要なキーワードになります.
今回は,データ分析を行ったことがない人のために,基礎的な内容をご紹介します.

よろしくお願いします・・・

(Udemy 『実践Pythonデータサイエンス』を参考,Jupiternotebookを使用)

カーネル密度推定とは?

簡単に言うと,『ガタガタのグラフ』を『滑らかなグラフ』に変換することです.滑らかなグラフに変換することで,x軸の値が分かれば,y軸の値も求めることが出来ます^^

以下の図を見てください.

ヒストグラム
カーネル密度推定

1つ目のグラフは,ヒストグラフで,2つ目のグラフがカーネル密度推定を行ったグラフです.

グラフを見てわかるように,ヒストグラフの場合,x軸が分かったところでy軸を求めることが出来ませんが,カーネル密度推定を行ったグラフでは,x軸が分かれば,y軸も求めることが出来ます.

 

Pythonでカーネル密度推定を行ってみよう

ライブラリ

import numpy as np

from numpy.random import randn

import pandas as pd

from scipy import stats

import matplotlib as mpl

import matplotlib.pyplot as plt

import seaborn as sns

%matplotlib inline

今回は,カーネル密度推定を行うために,seabornをインポートします.

そして,ランダムに25個のデータを持ってきて,ヒストグラムを描きます.

それでは,コードを見てみましょう^^

コード

dataset = randn(30)plt.hist(dataset,alpha=0.3)

sns.rugplot(dataset)

plt.savefig("hist_rug_mix")

このコードを実行すると,以下のグラフが表示されます.

ヒストグラムのみのグラフ

次に,このグラフをカーネル密度推定によるグラフで表してみます.

#カーネル密度関数を用いて描写する
sns.kdeplot(dataset)

sns.kdeplot()はカーネル密度推定を行うための関数です.

この1文を打つだけで,簡単にカーネル密度推定を行うことが出来ます.

このコードを実行すると,

カーネル密度関数のみのグラフ

このように,滑らかなグラフを描くことが出来ました.

ヒストグラムとカーネル密度関数を重ねてみると,以下の通りになります.

推定を行っているので,完璧に重なりませんが,概ね近い形となっているのではないでしょうか.

sns.rugplot(dataset)

sns.distplot(dataset)
ヒストグラムとカーネル密度関数を重ねる

カーネル密度関数にはいくつか種類がある

カーネル密度関数には,いくつか種類があり,上で示したグラフは,ガウス分布が使われています.

それでは,種類ごとのグラフを表示してみましょう.

#カーネル関数を変更してみる
kernel_selection = ["biw","cos","epa","gau","tri","triw"]

for kernel_change in kernel_selection:
    sns.kdeplot(dataset,kernel=kernel_change,label=kernel_change)
カーネル密度関数

このようになり,トップページで表示ているグラフになります.

このように,どのカーネル密度関数をつかうかによって,グラフが異なるので,

データ数や対象としているデータによって使い分けることが重要です.

おわりに

今回は,Pythonを使って,カーネル密度推定の基本的な使い方について勉強しました.

この説明で,分からないところがあれば,ホーム画面の『Q &A』で質問していただくと,

回答します.

それでは・・・

Q &A

 

 

 

頂いたご質問集

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA