読者の今回は、Pythonで5つのNumPyデータ分布に注目します。
まず始めに、データ分布はデータの分布についての考えを持つことを可能にします。
つまり、データ範囲の用語にあるすべての可能な値のリストを表し、また、分布の中でこれらのデータ値の頻度を表します。
PythonのNumPyモジュールは、ランダムなデータ値に対してランダムに生成されたデータ分布を持つのに役立つrandomクラスを提供しています。
NumPyのデータ分布
以下のNumPyデータ分布を使ってみましょう。
- Zipf 分布
- パレート分布
- レイリー分布
- 指数分布
- 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プログラミングに関連するこのような記事のために、私たちと一緒にご期待ください。