티스토리 뷰
[Day 09] Pandas II / 통계학
1. 강의 복습 내용
1) Pandas II
Pandas II
1. GroupBy I
- SQL Groupby 명령어와 같다
- Split -> apply -> combine
- 과정을 거쳐 연산

1) Hierarchical index
: GroupBy 명령의 결과물도 결국 dataframe
: 두 개의 Column으로 groupby를 할 경우, index가 두개 생성
2) Unstack
: Group으로 묶여진 데이터를 matrix 형태로 전환해줌
(유사 : Reset_index)
3) Swaplevel
: index 레벨의 변경 -> 결과물만 바뀜
4) sort_index
: index 레벨을 기준으로 정렬
5) sort_values
: Value값 기준으로 정렬
2. GroupBy II
1) Grouped
- Groupby에 의해 Split된 상태를 추출 가능함

- 특정 Key값을 가진 그룹의 정보만 추출 가능
grouped.get_group("Devils")
- 추출된 group 정보에는 세 가지 유형의 Apply가 가능
1) Aggregation : 요약된 통계정보를 추출해줌
2) Transformation : 해당 정보를 변환해줌
- Aggregation과 달리 Key값 별로 요약된 정보가 아님
- 개별 데이터의 변환을 지원
3) Filtration : 특정 정보를 제거하여 보여주는 필터링 기능
3. Pivot Table
- 우리가 Excel에서 보던 그것
- Index 축은 groupby와 동일
- Column에 추가로 labeling 값을 추가
- Value에 numeric type 값을 aggregation 하는 형태

4. Crosstab
5. Merge & Concat
1) Merge
- SQL에서 많이 사용하는 Merge와 같은 기능
- 두 개의 데이터를 하나로 합침
pd.merge(df_a,df_b,on='subject_id') #a,b에 모두 같은 컬럼 => on
pd.merge(df_a,df_b,left_on='subject_id',right_on='subject_id') # 두 df의 column이름이 다를 때
*) Join Method

pd.merge(df_a,df_b,on="subject_id",how="left") # left_join
pd.merge(df_a,df_b,on="subject_id",how="right") # right_join
# default how="inner"
2) Concat
df_new=pd.concat([df_a,df_b])
df_a.append(df_b)
*) 디렉토리에 있는 여러 엑셀파일들을 이어붙이고 싶을 때
import os
files=[files_name
for file_name in os.listdir("./data") if file_name.endswith("2014.xlsx")]
df_list=[pd.read_excel(
os.path.join("data", df_filename)) for df_filename in files]
status=df_list[0]
sales=pd.concat(df_list[1:])
3) Database connection
- Data laoding시 db connection 기능을 제공
4) XLS persistence
- Dataframe의 엑셀 추출 코드
- Xls 엔진으로 openpyxls or XlsxWrite 사용
2) 확률론
확률론 맛보기
1. 딥러닝에서 확률론이 필요한 이유
- 딥러닝은 확률론 기반의 기계학습 이론에 바탕을 두고 있다.
- 기계학습에서 사용되는 손실함수(loss function)들의 작동 원리는 데이터 공간을 통계적으로 해석해서 유도
- 회귀 분석에서 손실함수로 사용되는 L2-노름은 예측오차의 분산을 가장 최소화하는 방향으로 학습하도록 유도
- 분류 문제에서 사용되는 교차엔트로피(cross-entropy)는 모델 예측의 불확실성을 최소화하는 방향으로 학습하도록 유도
- 분산 및 불확실성을 최소화하기 위해서는 측정하는 방법을 알아야 한다.
2. 확률분포는 데이터의 초상화

1) 이산확률변수 vs 연속확률변수
- 확률변수는 확률분포 D에 따라 이산형(dixcrete)과 연속형(continuous) 확률변수로 구분하게 된다.
- 이산형 확률변수는 확률변수가 가질 수 있는 경우의 수를 모두 고려하여 확률을 더해서 모델링

- 연속형 확률변수는 데이터 공간에 정의된 확률변수의 밀도(density) 위에서의 적분을 통해 모델링

![]() |
![]() |
![]() |
2) 조건부확률과 기계학습

*) 기대값
- 확률분포가 주어지면 데이터를 분석하는 데 사용 가능한 여러 종류의 통계적 범함수(statistical functional)를 계산할 수 있다.
- 기대값(expectation)은 데이터를 대표하는 통계량이면서 동시에 확률분포를 통해 다른 통계적 범함수를 계산하는데 사용된다.

3. 몬테카를로 샘플링
- 기계학습의 많은 문제들은 확률분포를 명시적으로 모를 때가 대부분
- 확률분포를 모를 때 데이터를 이용하여 기대값을 계산하려면 몬테카를로(Monte Carlo) 샘플링 방법을 사용
- 몬테카를로는 이산형이든 연속형이든 상관없이 성립
- 몬테카를로 샘플링은 독립추출만 보장된다면 대수의 법칙(law of large number)에 의해 수렴성을 보장

+) 몬테카를로 샘플링 방법으로 원주율 구하기
import numpy as np
def mc_int(fun,low,high,sample_size=100,repeat=10) :
stat=[]
for _ in range(repeat) :
circle_count=0
square_count=0
x=np.random.uniform(low=low,high=high,size=sample_size) # 균등분포로 추출 -1에서 1
y=np.random.uniform(low=low,high=high,size=sample_size)
fun_x=fun(x,y)
for check in fun_x : # 난수 10000개의쌍을 가지고 원주율을 계산
if check<=1 :
circle_count+=1
square_count+=1
stat.append((circle_count/square_count)*4) # repeat : 1 당 원주율 저장
return np.mean(stat),np.std(stat) # 100회에 이르는 원주율의 평균, 표준편차 계산
def f_x(x,y) :
return np.sqrt(x**2+y**2)
print(mc_int(f_x,low=-1,high=1,sample_size=10000,repeat=100))
2. 피어 세션
1. 강의 내용에 대한 토의
- Pandas가 AI 분야에서 쓰이는 역할이 무엇일까?
- 밀도함수는 왜 꼭 적분을 해야할까? 밀도함수 자체가 가지는 의미는 무엇일까?
- 이산확률분포 데이터, 연속확률분포 데이터를 예를 들어 시각적으로 확실히 알아보자
- 몬테카를로 샘플링 방법 -> 원주율 구하기
- DFS식 토의 (중심극한정리, 점추정과 구간추정 등)
2. WEEK2 커리큘럼을 거의 마치면서 향후 피어세션 계획
- 강도높은 학습량에 우리가 취해야할 마인드 및 공부방법 재설정 논의
3. Conclusion
오늘은 어제 입문했던 Pandas에 대해 이어서 학습했으며, 통계학에 대해서 처음 배우기 시작했다.
물론 그동안 통계학을 아예 접하지 않았던것은 아니지만, 이론위주로 대강 용어의 의미만 알았지 더 나아가 알지 못했던 부분을 피어세션 집단지성으로 파고 들었던 것 같았다.
오늘의 학습에서 가장 재밌었던 것은, 몬테카를로 샘플링 방법으로 직접 코딩을 통해 원주율을 구해보았던 과정이 재미있었고 더 나아가 몬테카를로 알고리즘으로 무엇을 더 해볼 수 있는지 살펴볼 예정이다.
역시 코딩을 같이하며 학습하니 더 몰입도 되고 이해도 잘되는 것 같았다.
'부스트캠프 AI Tech > 학습정리' 카테고리의 다른 글
[Day 11] 딥러닝 기초 (0) | 2021.02.01 |
---|---|
[Day 10] 시각화 / 통계학 (0) | 2021.01.29 |
[Day 08] Pandas / 딥러닝 학습방법 이해하기 (0) | 2021.01.27 |
[Day 07] 경사하강법 (0) | 2021.01.26 |
[Day 06] Numpy / 벡터 / 행렬 (0) | 2021.01.25 |
- Total
- Today
- Yesterday
- 백준
- DeepLearning
- Unet
- NLP 구현
- 데이터연습
- DACON
- 브루트포스
- 그리디
- Data Handling
- P-Stage
- 데이터핸들링
- 프로그래머스
- AI 프로젝트
- cnn
- Vision AI 경진대회
- 다이나믹프로그래밍
- 네트워킹데이
- 부스트캠프 AI Tech
- 이분탐색
- python
- 알고리즘
- Unet 구현
- 동적계획법
- ResNet
- 코딩테스트
- dfs
- 공공데이터
- 백트래킹
- C++
- pandas
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |