본문 바로가기

Python/AI 수학 with Python

[Python] 분산과 표준편차 구현

 

python에서는 numpy의 var() 함수와 std() 함수를 통해 분산과 표준편차를 각각 구할 수 있다.

 

[In]

# 분산과 표준편차
import numpy as np

# 분산을 취하는 데이터
x_1 = np.array([55, 45, 60, 40])
x_2 = np.array([51, 49, 52, 48])

## 계산 1 (직접 구하기) ##

# 평균 구하기
x_1_avg = x_1.sum() / len(x_1)
x_2_avg = x_2.sum() / len(x_2)

# 편차 구하기
x_1_dev = x_1 - x_1_avg
x_2_dev = x_2 - x_2_avg

# 분산 구하기
x_1_var = (x_1_dev ** 2).sum() / len(x_1_dev)
x_2_var = (x_2_dev ** 2).sum() / len(x_2_dev)

# 표준편차 구하기
x_1_std = np.sqrt(x_1_var)
x_2_std = np.sqrt(x_2_var)

print(" 방법 1 ".center(30, '-'))
print()

print(" 평균 ".center(20, '*'))
print('x_1_avg :', x_1_avg)
print('x_2_avg :', x_2_avg)
print()

print(" 편차 ".center(20, '*'))
print('x_1_dev :', x_1_dev)
print('x_2_dev :', x_2_dev)
print()

print(" 분산 ".center(20, '*'))
print('x_1_var :', x_1_var)
print('x_2_var :', x_2_var)
print()

print(" 표준편차 ".center(20, '*'))
print("x_1_std :", x_1_std)
print("x_2_std :", x_2_std)
print()

print("".center(32, '-'))
print()
print()
print()

## 계산 2 (numpy의 var() 함수 이용) ##

# 분산
x_1_var = np.var(x_1)
x_2_var = np.var(x_2)

# 표준편차
x_1_std = np.std(x_1)
x_2_std = np.std(x_2)

print(" 방법 2 ".center(30, '-'))
print()

print(" 분산 ".center(20, '*'))
print('x_1_var :', x_1_var)
print('x_2_var :', x_2_var)
print()

print(" 표준편차 ".center(20, '*'))
print("x_1_std :", x_1_std)
print("x_2_std :", x_2_std)

print("".center(32, '-'))
print()

[Out]

------------ 방법 1 ------------

******** 평균 ********
x_1_avg : 50.0
x_2_avg : 50.0

******** 편차 ********
x_1_dev : [  5.  -5.  10. -10.]
x_2_dev : [ 1. -1.  2. -2.]

******** 분산 ********
x_1_var : 62.5
x_2_var : 2.5

******* 표준편차 *******
x_1_std : 7.905694150420948
x_2_std : 1.5811388300841898

--------------------------------



------------ 방법 2 ------------

******** 분산 ********
x_1_var : 62.5
x_2_var : 2.5

******* 표준편차 *******
x_1_std : 7.905694150420948
x_2_std : 1.5811388300841898
--------------------------------