Programming/Machine Learning

Machine Leaning 2-2강 - 분산, 표준편차, 오차율, 회귀, 표준점수

상맹 2021. 10. 27. 16:06
반응형
import numpy as np
import matplotlib.pyplot as plt

# 분산
list1 = [5,8,6,10,1]
target1 = [0,1,2,3,4]
n1 = np.array(list1)
t1 = np.array(target1)
m1 = n1.sum()/5
print(m1)

plt.scatter(t1, n1)
plt.show()

# 9.2 분산
# 3.03 표준편차 = 분산의 제곱근
# 8 (8 - 6 = 2편차) => 오차율 1.03
# 평균 + 표준편차 + 오차율 = 6 + 3.03 + 1.03 -> 9.03 + 1.03 = 10.06
# ( 2.97, 9.03)

평균값 6에서 떨어져있는 값 (-1, 2, 0, 4, -5)

분산 : 1+ 4 + 0 + 16 + 25 (-를 없애기 위해 모두 제곱) = 46 → 46 / 5 = 9.2

표준편차 : 9.2 의 제곱근 = 3.03 

 

- 5번 인덱스에 8이 찍혔을 경우 다음 값 예측하기

 8은 평균값 6에서 2만큼 떨어져있다. 평균 값에 대한 편차는 + - 2 이므로 표준 편차의 오차율 1.03

 → 각각의 값은 3.03(표준편차 값) 만큼 떨어져 있어야 하지만 갑자기 8이 들어오게 된다면 8은 '2' 밖에 떨어져 있기 때문에 3.03의 표준편차 값이 바뀌게 된다 따라서 8이 들어갈 경우 2의 편차, 1.03 의 오차율을 그 다음값에 반영 시켜 표준편차 값을 3.03을 만들면 된다.

그 다음값은!! → 평균 + 표준 편차 + 오차율 로 하면 된다.

 

분산은 표준편차를 찾기위해, 표준 편차는 오차율을 찾기 위해, 오차율은 평균으로 회귀를 시킬 수 있다.

회귀는 이전데이터를 보고 새로운 데이터를 예측할 수 있다. → 그렇기 때문에 우리는 분산과 표준편차를 사용한다.

 

 

정규 분포 - 위키백과, 우리 모두의 백과사전

확률론과 통계학에서 정규 분포(正規 分布, 영어: normal distribution) 또는 가우스 분포(Gauß 分布, 영어: Gaussian distribution)는 연속 확률 분포의 하나이다. 정규분포는 수집된 자료의 분포를 근사하는

ko.wikipedia.org

import numpy as np
import matplotlib.pyplot as plt

# 원데이터
# 분산
list1 = [5,8,6,10,1]
target1 = [0,1,2,3,4]
n1 = np.array(list1)
t1 = np.array(target1)

# 1. 평균 
m1 = n1.sum()/5 # mean(), sum()
print(m1)
print("="*50)

# 2. 분산 1. (n1 - m1) 2. 거듭 제곱 3. 합치고 4. 전체개수로 나누기
# 1. (n1 - m1) → [5,8,6,10,1] - [6] = [-1,2,0,4,-5]
# 2. [1,4,0,16,25]
# 3. 46
# 4. 9.2
b1 = np.square(n1-m1).mean()
b2 = ((n1-m1)**2).mean()
print(b1)
print("="*50)
print(b2)
print("="*50)

# 3. 표준 편차 1. 분산의 제곱근(루트) → numpy에서는 np.std(원래값) # 정규분포
# 1. 3.03
s1 = np.std(n1)
print(s1)
print("="*50)

s2 = np.sqrt(b1)
print(s2)
print("="*50)

# 표준 점수 mean(), std() → (원점수 - 평균) / 표준편차
# 1. 원점수  - 평균  = [-1,2,0,4,-5] 2. [-1,2,0,4,-5] / 표준 편차 [3.03] → std()
# 1. [5,8,6,10,1] - [6] = [-1,2,0,4,-5]
# 2. [-1,2,0,4,-5] / [3.03] =  [-0.330033    0.66006601  0.          1.32013201 -1.65016502]

# 표준점수를 사용하는 이유?
# 변별력을 위해서 점수는 표준화 해야한다.(A 50점, B 90점)
# 표준점수로 변경하면 데이터가 스케일링 된다.
# A C고 - 내신 성적 영어 50점  C고 영어 평균 = 55점 / 표준 편차 = 20 
# B D고 - 내신 성적 영어 90점  D고 영어 평균 = 95점 / 표준 편차 = 40

# 서울대학교 (A = 50, B = 90)  A (50 - 55) / 20  = -0.25    B   (90 - 95) / 40 = -0.125
n1_scaled = (n1 - m1.mean()) / np.std(n1)
print(n1_scaled)
print("="*50)

n2_scaled = (n1 - m1) / s1
print(n2_scaled)
print("="*50)


plt.scatter(t1, n1)
plt.show()

# 9.2 분산
# 3.03 표준편차 = 분산의 제곱근
# 8 (8 - 6 = 2편차) => 오차율 1.03
# 평균 + 표준편차 + 오차율 = 6 + 3.03 + 1.03 -> 9.03 + 1.03 = 10.06
# ( 2.97, 9.03)

반응형