데이터 세트의 모드 는 세트 에서 가장 자주 발생 하는 멤버 입니다. 동일한 횟수로 가장 자주 나타나는 두 멤버가있는 경우 데이터에는 두 가지 모드가 있습니다. 이것은 ... 불리운다 바이 모달 합니다.
2 개 이상의 모드가있는 경우 데이터를
multimodal 이라고 합니다. 데이터 세트의 모든 멤버가 동일한 횟수로 나타나면 데이터 세트에
모드 가
없는 것입니다. 것입니다.
다음 함수 modes()
는 주어진 데이터 목록에서 모드 를 찾는 데 사용할 수 있습니다 .
import numpy as np; import pandas as pd
def modes(arr):
df = pd.DataFrame(arr, columns=['Values'])
dat = pd.crosstab(df['Values'], columns=['Freq'])
if len(np.unique((dat['Freq']))) > 1:
mode = list(dat.index[np.array(dat['Freq'] == max(dat['Freq']))])
return mode
else:
print("There is NO mode in the data set")
산출:
# For a list of numbers in x as
In [1]: x = [2, 3, 4, 5, 7, 9, 8, 12, 2, 1, 1, 1, 3, 3, 2, 6, 12, 3, 7, 8, 9, 7, 12, 10, 10, 11, 12, 2]
In [2]: modes(x)
Out[2]: [2, 3, 12]
# For a list of repeated numbers in y as
In [3]: y = [2, 2, 3, 3, 4, 4, 10, 10]
In [4]: modes(y)
There is NO mode in the data set
# For a list of stings/characters in z as
In [5]: z = ['a', 'b', 'b', 'b', 'e', 'e', 'e', 'd', 'g', 'g', 'c', 'g', 'g', 'a', 'a', 'c', 'a']
In [6]: modes(z)
Out[6]: ['a', 'g']
이러한 패키지에서 함수 를 가져 numpy
오거나 pandas
호출 하지 않으려면 동일한 출력을 얻기 위해 함수를 다음 modes()
과 같이 작성할 수 있습니다.
def modes(arr):
cnt = []
for i in arr:
cnt.append(arr.count(i))
uniq_cnt = []
for i in cnt:
if i not in uniq_cnt:
uniq_cnt.append(i)
if len(uniq_cnt) > 1:
m = []
for i in list(range(len(cnt))):
if cnt[i] == max(uniq_cnt):
m.append(arr[i])
mode = []
for i in m:
if i not in mode:
mode.append(i)
return mode
else:
print("There is NO mode in the data set")