[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/Data & AI

머신러닝 기초수학1 - 통계학

inu 2020. 6. 3. 12:12
반응형

통계학 기초

  • 수치 데이터의 수집, 분석, 해석, 표현 등을 다루는 수학의 한 분야
  • 기술 통계학 : 연속형 데이터 / 범주형 데이터
  • 추론 통계학 : 가설 검정 등의 방식으로 전체에 대한 추론을 하는 것
  • 통계 모델링 : 데이터에 통계학을 적용해 변수의 유의성을 분석, 방대한 양의 데이터에 숨겨진 특징을 찾아내는 것. 여러 데이터를 하나의 수학적 모델로 나타낸다. (y = ax + b, 정규분포 등)
  • 확률 분포 : 최빈값, 중앙값(정규분포에서는 중앙값이 최빈값과 동일), 평균(정규분포에서는 중강값,최빈값과 동일)
import numpy as np
from scipy import stats

np.random.seed(0)

data_A = np.random.randint(0,100,10000)
data_B = np.random.normal(size = 100) # 정규분포에 가까운 데이터 생성

mean = np.mean(data_A) # 평균값
median = np.median(data_A) # 중앙값
mode = stats.mode(data_A) # 최빈값 (빈도순 정렬, 각각 몇개를 가지고 있는지도 저장된 2차원배열)

통계학 용어

  • 변량 : 일종의 변수
  • 산포 : 데이터의 변량, 데이터가 얼마나 중심으로 모이지 않고 흩어져 있는지
  • 분산 : 평균과의 거리를 제곱한 값의 평균. 산포의 정도를 구하는 값. 제곱을 하는 이유는 음의 값을 제거하기 위해
  • 표준변차 : 분산의 제곱근
  • 분산을 표준편차로 만드는 이유는 분산값이 너무 크기 때문에 이를 교정하는 것이다.
  • 사분위수 : 데이터를 사등분한 지점을 표현한 지표. 데이터의 구성을 전체적으로 살펴보고자 할 때 사용. 데이터의 이상치 탐색과 중심위치 및 분포를 빠르게 파악할 수 있다. 각각 1/4, 2/4, 3/4, 4/4에 해당하는 지점을 1사분위수, 2사분위수, 3사분위수, 4사분위수라고 한다. 전체범위가 짝수인 경우 단면의 값들에 대해 평균을 구해 표현한다.
import pandas as pd

store_a = pd.Series([20,21,23,22,26,28,35,35,41,42,43,45,44,45,46,47,47,47,46,47,58,58,59,60,56,57,57,80])
store_b = pd.Series([5,6,11,13,15,16,20,20,21,23,22,27,27,30,30,32,36,37,37,40,40,43,44,45,51,54,70,600])

A_Q1 = store_a.quantile(0.25) : print("1사분위수 : ", A_Q1)
A_Q2 = store_a.quantile(0.50) : print("2사분위수 : ", A_Q2)
A_Q3 = store_a.quantile(0.75) : print("3사분위수 : ", A_Q3)
A_Q4 = store_a.quantile(1) : print("4사분위수 : ", A_Q4)

B_Q1 = store_b.quantile(0.25) : print("1사분위수 : ", B_Q1)
B_Q2 = store_b.quantile(0.50) : print("2사분위수 : ", B_Q2)
B_Q3 = store_b.quantile(0.75) : print("3사분위수 : ", B_Q3)
B_Q4 = store_b.quantile(1) : print("4사분위수 : ", B_Q4)

박스 플롯

  • 박스 플롯 : 박스 형태로 데이터 표시. 이상치 탐색, 데이터의 분포 등을 한눈에 확인하기 좋다. 다른 객체와 비교도 용이
import matplotlib.pyplot as plt
import pandas as pd

box_num = pd.Series([16,21,22,23,24,25,30])

plt.boxplot(box_num)
plt.grid()
plt.show()

사분범위와 이상치

  • IQR(Inter Quartile Range) : 사분범위. 중앙에서 50프로 범위. 3사분위수에서 1사분위수를 빼서 구한다.
  • 사분범위의 1.5배를 기준으로 이를 넘어갈 경우 이상치로 본다.
  • 하단범위는 1사분위수에서 사분범위의 1.5배 값을 빼주고 이 값보다 작을 경우 이상치로 본다.
  • 상단범위는 3사분위수에서 사분범위의 1.5배 값을 더하고 이 값보다 클 경우 이상치로 본다.
IQR = Q3 - Q1
print("IQR : ", IQR)
STEP1 = IQR * 1.5
print("STEP1 : ", STEP1)

Lower_fence = Q1 - STEP1
print(Lower_fence)

Upper_fence = Q3 + STEP1
print(Upper_fence)
반응형

'🛠 기타 > Data & AI' 카테고리의 다른 글

[파이썬] Numpy Fancy Indexing  (0) 2020.07.09
[파이썬] Numpy 기초  (0) 2020.07.08
딥러닝 기초  (0) 2020.06.13
머신러닝 기초수학2 - 미분  (0) 2020.06.09
머신러닝의 분류  (0) 2020.06.02