본문 바로가기
programming/AI

머신러닝 평균값 중앙값 최빈값 구하기 mean median mode

by 개코 - 개발과 코딩 2021. 8. 3.

머신러닝에는 3가지의 수학적 관심사가 있다. 평균값 중앙값 최빈값이다. 이것은 평균값을 나타내는 지표이고 통계학과 관련이 있다. 머신러닝이 데이터 기반의 프로그램이라는 것을 생각하면 납득이 된다. 수많은 데이터에서 공통되는 지표를 찾기란 어렵다. 이것을 구분짓는 것이 수학적으로 가장 가까운 것이 평균이기도 하다.

머신러닝 평균값 중값 최빈값 구하기
머신러닝 평균값 중값 최빈값 구하기

 

머신러닝의 수학적 3가지 지표

방대한 데이터 속에서 특정값을 찾기란 어렵다.

그렇기에 수학적으로 접근하는 시도가 있었다.

컴퓨터도 수학을 위해 발명된 것이 아닌가.

머신러닝을 위해 접하는 첫번째 수학은 통계이기도 하다.

그 중 대표적인 3가지는 평균값, 중앙값, 최빈값이다.

머리가 아프다. 정리만 하고 넘어가자

  • 평균값 Mean
    - 표본을 모두 더한 후 표본의 수로 나눈 값
    - 나열된 모든 숫자를 더한 후 나열된 모든 수의 갯수로 나눈 값
  • 중앙값 Median
    - 표본에서 중앙에 위치하는 값 또는 그 이하가 표본의 절반을 차지하는 값
    - 순서대로 정렬된 모든 수에서 가운데에 위치한 값이나 혹은 가운데에 위치할 값에 근접한 작은 값
    - 가운데에 있는 값
  • 최빈값 Mode
    - 표본에서 가장 자주 발생한 값
    - 나열된 모든 수에서 가장 많이 나타난 값
    - 가장 일반적으로 나타난 값

머리는 아프지만 수학이기에 개념만 알고 넘어가도록 하자.

머신러닝을 위해 수학을 따로 공부하는 사람들도 있지만, 결과물이 하나라도 없는 상황에서는 개념만 익히도록 하자.

 

표본 구하기

파이썬으로 평균값, 중앙값, 최빈값을 구하기 위한 표본값을 구해보자.

통계청에 가면 여러가지 지표가 있고, 다양한 값이 있다.

여기서는 전국 지역별 총인구수를 참고로 한다.

population = [25770033,9565990,3364358,2397646,2936367,1442647,1456107,1126369,362995,13500688,1535530,1597503,2117400,1794345,1840921,2632401,3325840,675293]

 

파이썬으로 계산하기

파이썬으로 평균값, 중앙값, 최빈값을 구해보도록 하자.

파이썬에서 수학적 계산을 위한 라이브러리가 존재한다.

NumPy 와 SciPy 이다.

이 2개의 모듈도 나름 공부할 양이 많은 존재이기도 하다.

여기서는 계산에 필요한 것만 사용하도록 하자.

  • 평균값 : NumPy.mean(표본 리스트) 함수 사용
  • 중앙값 : NumPy.median(표본 리스트) 함수 사용
  • 최빈값 : SciPy.mode(표본 리스트) 함수 사용

 

코드 샘플

평균값 중앙값 최빈값을 구하기 위해 몇가지 형태의 샘플이다.

수가 클수록 눈으로 보기가 어렵다.

점차 수를 작게 하면서 평균값 중앙값 최빈값을 구해보도록 하였으며, 눈으로 보기 편하게 하였다.

import numpy
from scipy import stats

print('--------------------------------------------------')

vPopulation = [25770033,9565990,3364358,2397646,2936367,1442647,1456107,1126369,362995,13500688,1535530,1597503,2117400,1794345,1840921,2632401,3325840,675293]

vMean = numpy.mean(vPopulation)
print(' 평균값 Mean : ', vMean, type(vMean))

vMedian = numpy.median(vPopulation)
print(' 중앙값 Median : ', vMedian, type(vMedian))

vMode = stats.mode(vPopulation)
print(' 최빈값 Mode : ', vMode, type(vMode))

print('--------------------------------------------------')

vPopulation = [25,95,33,23,29,14,14,11,36,13,15,15,21,17,18,26,33,67]

vMean = numpy.mean(vPopulation)
print(' 평균값 Mean : ', vMean, type(vMean))

vMedian = numpy.median(vPopulation)
print(' 중앙값 Median : ', vMedian, type(vMedian))

vMode = stats.mode(vPopulation)
print(' 최빈값 Mode : ', vMode, type(vMode))

print('--------------------------------------------------')

vPopulation = [2,9,3,2,2,1,1,1,3,1,1,1,2,1,1,2,3,6]

vMean = numpy.mean(vPopulation)
print(' 평균값 Mean : ', vMean, type(vMean))

vMedian = numpy.median(vPopulation)
print(' 중앙값 Median : ', vMedian, type(vMedian))

vMode = stats.mode(vPopulation)
print(' 최빈값 Mode : ', vMode, type(vMode))

print('--------------------------------------------------')

결과화면을 보면 알 수 있다.

평균값 중앙값 최빈값을 다시 언급을 해보면 다음과 같다.

 

  • 평균값 Mean
    - 표본을 모두 더한 후 표본의 수로 나눈 값
    - 나열된 모든 숫자를 더한 후 나열된 모든 수의 갯수로 나눈 값
    - NumPy.mean(표본리스트) 함수 사용
  • 중앙값 Median
    - 표본에서 중앙에 위치하는 값 또는 그 이하가 표본의 절반을 차지하는 값
    - 순서대로 정렬된 모든 수에서 가운데에 위치한 값이나 혹은 가운데에 위치할 값에 근접한 작은 값
    - 가운데에 있는 값
    - NumPy.median(표본리스트) 함수 사용
  • 최빈값 Mode
    - 표본에서 가장 자주 발생한 값
    - 나열된 모든 수에서 가장 많이 나타난 값
    - 가장 일반적으로 나타난 값
    - SciPy.mode(표본 리스트) 함수 사용

 

결과의 마지막으로 갈수록 수가 작아지기 때문에 눈으로 보고 확인하기 쉬울 것이다.

작은 수로 검증이 된 것을 확인하면 맨 위의 실제 전국 지역별 총인구수에 대한 평균값, 중앙값, 최빈값을 알 수 있다.

반응형

댓글