728x90
반응형
편차, 분산, 표준편차
1. 편차 (Deviation)
- 각 데이터 포인트와 평균 사이의 차이
- 개별 데이터 값과 평균의 차이를 계산
하나의 변량이 평균으로부터 얼마나 떨어져 있는가를 나타내는 값이며,
모든 편차의 합은 무조건 0이 나오므로 의미있는 결과물을 얻기 위해 편차에 제곱하여 평균을 구한 후 분산을 구한다.
2. 분산 (Variance)
- 데이터가 평균을 중심으로 얼마나 퍼져 있는지를 나타낸다.
- 편차의 제곱을 평균한 값
- 분산을 구하면 양수 값을 가지게 되어 편차의 분호에 영향을 받지 않는다.
3. 표준편차
- 분산의 제곱근
- 데이터 퍼짐 정도를 원래 데이터와 동일한 단위로 표현한다.
분산하고 표준편차하고 무슨 차이가 있을까?
분산은 데이터와 평균 사이의 차이의 제곱의 평균인데,
예를들어 데이터가 "달러" 이라면 분산은 달러^2 이다.
근데 표준편차는 분산의 제곱근이니깐,
원래 데이터와 동일한 단위를 가지므로 해석이 더 직관적 이다.
import numpy as np
# 예시 데이터
data = np.array([1, 2, 3, 4, 5])
# 평균
mean = np.mean(data)
# 편차
deviations = data - mean
# 분산 (표본 분산)
variance_sample = np.var(data)
# 표준편차 (표본 표준편차)
std_dev_sample = np.std(data)
print("데이터:", data)
print("평균:", mean)
print("편차:", deviations)
print("표본 분산:", variance_sample)
print("표본 표준편차:", std_dev_sample)
결과
데이터: [1 2 3 4 5]
평균: 3.0
편차: [-2. -1. 0. 1. 2.]
표본 분산: 2.0
표본 표준편차: 1.4142135623730951
randn, rand, randint 차이
1. randn
설명: 표준 정규분포 (평균 0, 표준편차 1)를 따르는 난수를 생성
용도: 통계적 분석, 모형 생성 등에서 정규 분포된 데이터를 생성할 때 유용합니다.
import numpy as np
data = np.random.randn(5)
print(data)
2. rand
설명: 0과 1 사이의 균등 분포를 따르는 난수를 생성
용도: 균일한 확률로 값을 뽑아야 할 때, 예를 들어 무작위 추출, 시뮬레이션 등에 사용합니다.
import numpy as np
data = np.random.rand(5)
print(data)
3. randint
설명: 주어진 범위 내에서 정수형 난수를 생성합니다.
용도: 정수형 난수를 필요로 하는 경우, 예를 들어 인덱스 선택, 샘플링 등에 사용합니다
import numpy as np
data = np.random.randint(1, 10, size=5)
print(data)
matplotlib 를 사용하여 비교
import numpy as np
import matplotlib.pyplot as plt
# 난수 데이터 생성
data_randn = np.random.randn(1000) # 표준 정규 분포 난수 1000개
data_rand = np.random.rand(1000) # 0과 1 사이의 균등 분포 난수 1000개
data_randint = np.random.randint(1, 10, size=1000) # 1과 9 사이의 정수 난수 1000개
# 그래프 그리기
fig, axs = plt.subplots(3, 1, figsize=(10, 15))
# randn 히스토그램
axs[0].hist(data_randn, bins=30, color='blue', alpha=0.7)
axs[0].set_title('randn: 표준 정규 분포')
axs[0].set_xlabel('값')
axs[0].set_ylabel('빈도')
# rand 히스토그램
axs[1].hist(data_rand, bins=30, color='green', alpha=0.7)
axs[1].set_title('rand: 0과 1 사이의 균등 분포')
axs[1].set_xlabel('값')
axs[1].set_ylabel('빈도')
# randint 히스토그램
axs[2].hist(data_randint, bins=np.arange(1, 11) - 0.5, color='red', alpha=0.7, rwidth=0.8)
axs[2].set_title('randint: 1과 9 사이의 정수형 난수')
axs[2].set_xlabel('값')
axs[2].set_ylabel('빈도')
# 그래프 간격 조정
plt.tight_layout()
plt.show()
728x90
반응형
'AI Naver boost camp > [Week 01] Pytorch' 카테고리의 다른 글
선형 회귀 (Linear Regression) _ 2 - 경사하강법, 데이터 표준화 (0) | 2024.08.08 |
---|---|
선형 회귀 (Linear Regression) _ 1 - 상관관계, pytorch 모델 코드, loss funtion (0) | 2024.08.08 |
Day - 04 (0) | 2024.08.08 |
Tensor 노름 (0) | 2024.08.07 |
Tensor 생성과 조작 (0) | 2024.08.06 |
댓글