NumPyで便利なデータ分布を解説(zipf,パレート,レイリー,指数,乱数)

スポンサーリンク

読者の今回は、Pythonで5つのNumPyデータ分布に注目します。

まず始めに、データ分布はデータの分布についての考えを持つことを可能にします。

つまり、データ範囲の用語にあるすべての可能な値のリストを表し、また、分布の中でこれらのデータ値の頻度を表します。

PythonのNumPyモジュールは、ランダムなデータ値に対してランダムに生成されたデータ分布を持つのに役立つrandomクラスを提供しています。

スポンサーリンク

NumPyのデータ分布

以下のNumPyデータ分布を使ってみましょう。

  1. Zipf 分布
  2. パレート分布
  3. レイリー分布
  4. 指数分布
  5. choice()関数を用いた乱数分布

1. Zipf 分布

Zipf NumPy のデータ分布は、「x 番目に多い要素は、範囲から最も多い要素の 1/x 倍になる」という zipf の法則に基づくものです。

Python の random.zipf() 関数を使うと、配列に対して Zipf 分布を実装することができます

構文は以下の通りです。

random.zipf(a,size)
  • a: 分布パラメータ
  • size: 結果の配列の次元。

例えば、以下の様になります。

from numpy import random
 
data = random.zipf(a=2, size=(2, 4))
 
print(data)

結果は以下の通りです。

[[   2   24    1    1]
 [   4 1116    4    4]]

2. パレート分布

20%の要因が結果の80%に寄与し引き起こすというパレートの法則に従う。

pareto()関数は、乱数に対してパレート分布(Pareto Data Distribution)を実装することができる。

以下の構文を見てください。

random.pareto(a,size)
  • a: 形状
  • size: 結果の配列の大きさ。

例えば、以下の様になります。

from numpy import random
 
data = random.pareto(a=2, size=(2, 4))
 
print(data)

出力。

[[2.33897169 0.40735475 0.39352079 2.68105791]
 [0.02858458 0.60243598 1.17126724 0.36481641]]

3. レイリー分布

レイリー分布は、信号処理における確率密度分布を定義し、理解することができます

以下の構文を見てください。

random.rayleigh(scale,size)
  • スケール。スケール:標準偏差の値で、基本的にデータ分布の平坦さを決定します。
  • サイズ。出力配列の次元。

例えば、以下の様になります。

from numpy import random
 
data = random.rayleigh(scale=2, size=(2, 4))
 
print(data)

結果を出力すると、以下の様になります。

[[3.79504431 2.24471025 2.3216389  4.01435725]
 [3.1247996  1.08692756 3.03840615 2.35757077]]

4. 指数分布

指数分布は、次の事象が発生するまでの時間枠を把握することができる。

つまり、確率の点数によって、どのような行動が発生するのかがわかる。

例えば、成功率対失敗率のフレームは、成功/失敗です。

構文は以下の様な感じです。

random.exponential(scale, size)
  • スケール。アクションの発生回数の逆数。デフォルト値=1.0
  • size: 出力配列のサイズ。

例えば、以下の様になります。

from numpy import random
 
data = random.exponential(scale=2, size=(2, 4))
 
print(data)

結果を出力すると、以下の様になります。

[[0.56948472 0.08230081 1.39297867 5.97532969]
 [1.51290257 0.95905262 4.40997749 7.25248917]]

5. choice()関数による乱数分布

乱数分布は、確率密度値のある特徴に従ったランダムなデータの集合を表します。

randomクラスはchoice()関数を提供し、確率値の集合に基づいて乱数を定義することができます

確率の範囲は 0 と 1 の間で、0 はその集合の中で発生しない数、1 はその集合の中で必ず発生する数を表します。

構文は以下の様な感じです。

random.choice(array, p, size)
  • 配列。ランダムデータ分布が発生する要素。配列の要素数は p のカウントと等しくなければならない。
  • p: p: 配列の各要素が確率分布に含まれる確率のスコア.p: 配列の各要素が確率分布に含まれる確率の点数,すべての p の値の和は 1 に等しくなければならない.
  • size: 2次元/1次元配列のサイズ.

例えば、以下の様になります。

from numpy import random
 
data = random.choice([1,3,5,7], p=[0.1, 0.3, 0.2, 0.4], size=(2, 2))
 
print(data)

出力。

[[7 7]
 [1 3]]

まとめ

ここまでで、このトピックは終了です。

何か疑問があれば、お気軽にコメントください。

Pythonプログラミングに関連するこのような記事のために、私たちと一緒にご期待ください。

タイトルとURLをコピーしました