Generator.standard_gamma – 標準ガンマ分布から乱数配列を作成する方法

Generator.standard_gammaは、標準ガンマ分布から乱数配列を生成するジェネレータメソッドです。

標準ガンマ分布とは、scale(広がり)が1のガンマ分布のことです。

ガンマ分布とは、簡単に言うと、ある一定の期間に1回起こるランダムな事象がn回起こるまでの時間の分布を示したものです。たとえば、電子部品の寿命の分布や、通信の待ち時間の分布などに使われます。

このページでは、このGenerator.standard_gammaメソッドについて解説します。

なお任意のscaleのガンマ分布からの乱数を取得するには、Generator.gammaメソッドを使います。以下のページで解説しています。

目次

1. 書式

Generator.standard_gamma

書き方:

Generator.standard_gamma(shape, size=None, dtype=np.float64, out=None)

パラメーター:

shape: float or array_like of floats
標準ガンマ分布の形状を指定する。負の数は不可。値が大きいほど正規分布に近づく。※標準ガンマ分布ではshape = mean(平均値)
size: int or tuple of ints, optional
出力する配列のshapeを指定する。デフォルト値のNoneの場合で、かつ、shapeとscaleがともにスカラーの場合、1つの乱数の値を返す。それ以外の場合は、np.broadcast(shape, scale).sizeの乱数を生成する。(参考:『NumPyのshape属性 – 配列の形状の確認と変更』)
dytpe: dtype, optional
生成する配列の要素の型。float64とfloat32のみ指定可能。デフォルト値はnp.float64。配列の要素の型については、『NumPyのdtype属性の一覧と参照・指定・変更方法』を参照すること。
out: ndarray, optional
ここで指定した配列に、ジェネレータメソッドで生成する配列を代入する。両方のshapeが合致している必要がある。

戻り値: 

out: ndarray or scalar
指定した範囲の標準ガンマ分布からの乱数を出力する。

2. サンプルコード

それでは、サンプルコードを見ていきましょう。

まずは、random.default_rng コンストラクタでジェネレータオブジェクトを作成します。『numpy.random.default_rng – 乱数生成のためのジェネレータオブジェクトの作成』に目を通しておいてください。

In [1]:
import numpy as np
rng = np.random.default_rng()
rng
Out[1]:
Generator(PCG64) at 0x7FA969387D68

こうして作成したジェネレータオブジェクト rng に対して、Generator.standard_gammaを呼び出します。

第一引数にshape、第二引数にsizeを渡します。

In [2]:
rng.standard_gamma(2., 5)
Out[2]:
array([1.66040986, 0.81729393, 2.85242875, 0.26096036, 1.24450398])

標準ガンマ分布のヒストグラムと確率密度関数を確認しておきましょう。

In [3]:
shape, scale = 2., 1.
s = rng.standard_gamma(shape, 1000000)

import matplotlib.pyplot as plt
import scipy.special as sps  
count, bins, ignored = plt.hist(s, 50, density=True)
y = bins**(shape-1) * ((np.exp(-bins/scale))/  
                      (sps.gamma(shape) * scale**shape))
plt.plot(bins, y, linewidth=2, color='r')  
plt.show()

3. まとめ

以上のように、Generator.standard_gammaは標準ガンマ分布から乱数配列を生成するジェネレータメソッドです。これとは別に任意のscaleの指数分布を設定できるものに、『Generator.gamma – ガンマ分布から乱数配列を生成』があります。

これまで使われていたnp.random.standard_gamma関数は継続して使用可能ですが、Generator.standard_gammaメソッドを使った方が遥かに高速で科学技術計算に適しています。

Python初心者におすすめのプログラミングスクール

「未経験からでもPythonを学べるプログラミングスクールを探しているけど、色々ありすぎてわからない」なら、次の3つのプログラミングスクールから選んでおけば間違いはありません。

Aidemy Premium:全くの初心者ができるだけ効率よく短期間で実務的に活躍できるAI人材になることを目的とした講座。キャリアカウンセリングや転職エージェントの紹介などの転職支援も充実しており、受講者の転職成功率が高い。

AIジョブカレPythonの基本をおさえた人が、実際に機械学習やディープラーニングを活用できるようになるための講座。転職補償型があるなどキャリア支援の内容が非常に手厚く、講師の質も最高クラス。コスパ最高。Python初心者用の対策講座もある。

データミックスプログラミング経験者のビジネスマンが、更なるキャリアアップのためにデータの処理方法を学んでデータサイエンティストになるための講座。転職だけでなく起業やフリーランスとして独立する人も多い。Python初心者用の対策講座もある。

特に、あなたが以下のような目標を持っているなら、この中から選んでおけば間違いはないでしょう。

・未経験からPythonエンジニアとして就職・転職したい
・AIエンジニアやデータサイエンティストとしてキャリアアップしたい
・起業やフリーランスを視野に入れたい

理由は「Python初心者のためのおすすめプログラミングスクール3選」で解説しています。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる