티스토리 뷰

728x90

[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에 대해 이어서 학습했으며, 통계학에 대해서 처음 배우기 시작했다.

물론 그동안 통계학을 아예 접하지 않았던것은 아니지만, 이론위주로 대강 용어의 의미만 알았지 더 나아가 알지 못했던 부분을 피어세션 집단지성으로 파고 들었던 것 같았다.

 

오늘의 학습에서 가장 재밌었던 것은, 몬테카를로 샘플링 방법으로 직접 코딩을 통해 원주율을 구해보았던 과정이 재미있었고 더 나아가 몬테카를로 알고리즘으로 무엇을 더 해볼 수 있는지 살펴볼 예정이다.

 

역시 코딩을 같이하며 학습하니 더 몰입도 되고 이해도 잘되는 것 같았다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
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
글 보관함