SciPy scipy.stats.mode 関数

Bhuwan Bhatt 2023年1月30日
  1. scipy.stats.mode() の構文:
  2. コード例:scipy.stats.mode()``軸が設定されていないでモードを検索するメソッド
  3. コード例:scipy.stats.mode() 関数で axis=None を設定する
  4. コード例:scipy.stats.mode() 関数で axis=1 を設定する
SciPy scipy.stats.mode 関数

Python Scipy scipy.stats.mode() 関数は、指定された軸に沿った配列要素のモードを計算します。モードは、データセットで最も頻繁に観測される値です。データセット内で複数のアイテムの頻度が最も高い場合、モードとして最小の値を取得します。

scipy.stats.mode() の構文:

scipy.stats.mode(a, axis=0)

パラメーター

a これは、モードが計算される n 次元配列です。
axis これはオプションのパラメータです。これは、モードが計算される軸です。デフォルトでは、axis=0

戻り値

2つの値を返します。

  1. 設定された軸に応じた n 次元配列要素のモード値の配列。
  2. n 次元配列要素に存在する各モード値のカウントの配列。

コード例:scipy.stats.mode()``軸が設定されていないでモードを検索するメソッド

import numpy as np
import scipy
from scipy import stats

arr = np.array([[2, 5, 6, 8], [3, 7, 3, 0], [1, 1, 4, 4], [9, 5, 0, 5], [6, 4, 2, 2]])

result = scipy.stats.mode(arr)
print("The mode of given data is:\n", result[0])
print("The frequency of mode items is:\n", result[1])

出力:

The mode of given data is:
 [[1 5 0 0]]
The frequency of mode items is:
 [[1 2 1 1]]

ここでは、多次元配列 arr2 次元で作成されています。配列は引数として stats.mode 関数に渡され、変数 result に格納された出力が生成されます。

この状態では軸パラメータが定義されていないため、モード操作はデフォルトで横軸で行われます。

最初の列の要素でわかるように、すべての要素のカウントが等しく、1 が最小値であるため、カウント 1 の最初の列 1 のモードが得られます。2 番目の列要素では、5 が 2 回発生するため、カウント 2 のモードであり、残りの列要素でも同様です。

出力には 2つの値が表示されます。1つ目はモード値要素を持つ配列を示す ModeResult であり、2つ目は count は特定の多次元データのそれぞれのモード値の数を示す配列です。

コード例:scipy.stats.mode() 関数で axis=None を設定する

scipy.stats.mode() 関数で axis=None を設定すると、関数は配列全体から単一のモードを計算します。

import numpy as np
import scipy
from scipy import stats

arr = np.array([[2, 5, 6, 8], [3, 7, 3, 0], [1, 1, 4, 4], [9, 5, 0, 5], [6, 4, 2, 2]])

result = scipy.stats.mode(arr, axis=None)
print("The mode of given data is :", result[0][0])
print("The frequency of mode is :", result[1][0])

出力:

The mode of given data is : 2
The frequency of mode is : 3

ここでは、軸が None に設定されている場合は常に、モード操作が配列要素全体で行われ、最も頻繁に観測されるデータが考慮されるため、出力には単一の配列要素 2 が表示されます。

コード例:scipy.stats.mode() 関数で axis=1 を設定する

scipy.stats.mode() 関数で axis=1 を設定すると、関数は配列の各行のモードを計算します。

import numpy as np
import scipy
from scipy import stats

arr = np.array([[2, 5, 6, 8], [3, 7, 3, 0], [1, 1, 4, 4], [9, 5, 0, 5], [6, 4, 2, 2]])

result = scipy.stats.mode(arr, axis=1)
print("The mode of given data is:\n", result[0])
print("The frequency of mode items is:\n", result[1])

出力:

The mode of given data is:
 [[2]
 [3]
 [1]
 [5]
 [2]]
The frequency of mode items is:
 [[1]
 [2]
 [2]
 [2]
 [2]]

ここで、軸は 1 に設定されています。これは、モード操作が垂直軸で行われることを意味します。したがって、最初の行の要素では、要素が繰り返されておらず、最小の 2 がモードであることがわかります。要素の 2 行目では、3 が最も繰り返されているため、他の要素と同様のモードになっています。

関連記事 - SciPy Stats