
수업 정리
강의 목록
[Python Basic for AI] pandas 1
- pandas
- 구조화된 데이터의 처리를 지원하는 Python 라이브러리
- panel data -> pandas
- 고성능 array 계산 라이브러리인 numpy와 통합하여, 강력한 “스프레드시트” 처리 기능을 제공
- 인덱싱, 연산용 함수, 전처리 함수 등을 제공함
- 데이터 처리 및 통계 분석을 위해 사용
- Series : DataFrame 중 하나의 Column에 해당하는 데이터의 모음 Object
- Subclass of numpy.ndarray
- Data : any type
- Index labels need not be ordered
- Duplicates are possible (but result in reduced functionality)
- DataFrame : Data Table 전체를 포함하는 Object (Series를 모아서 만든 Data Table = 기본 2차원)
- NumPy array-like
- Each column can have a different type
- Row and column index
- Size mutable : insert and delete columns
- loc – index location
- iloc – index position
- loc은 index 이름, iloc은 index number
- pandas의 series type의 데이터에도 map 함수 사용가능
- function 대신 dict, sequence형 자료등으로 대체 가능
- replace function
- Map 함수의 기능중 데이터 변환 기능만 담당
- 데이터 변환시 많이 사용하는 함수
- apply for dataframe
- map과 달리, series 전체(column)에 해당 함수를 적용
- 입력 값이 series 데이터로 입력 받아 handling 가능
- 내장 연산 함수를 사용할 때도 똑같은 효과를 거둘 수 있음
- mean, std 등 사용가능
- scalar 값 이외에 series값의 반환도 가능함
- series 단위가 아닌 element 단위로 함수를 적용함
- series 단위에 apply를 적용시킬 때와 같은 효과
- describe : Numeric type 데이터의 요약 정보를 보여줌
- unique : series data의 유일한 값을 list를 반환함
- sum
- 기본적인 column 또는 row 값의 연산을 지원
- sub, mean, min, max, count, median, mad, var 등
- isnull : column 또는 row 값의 NaN (null) 값의 index를 반환함
- sort_values : column 값을 기준으로 데이터를 sorting
- Correlation & Covariance
- 상관계수와 공분산을 구하는 함수
- corr, cov, corrwith
[Python Basic for AI] pandas 2
- Groupby
- SQL groupby 명령어와 같음
- split -> apply -> combine
- 과정을 거쳐 연산함
- 한 개이상의 column을 묶을 수 있음
- Hierarchical index
- Groupby 명령의 결과물도 결국은 dataframe
- 두 개의 column으로 groupby를 할 경우, index가 두개 생성
- unstack : Group으로 묶여진 데이터를 matrix 형태로 전환해줌
- swaplevel : Index level을 변경할 수 있음
- operations : Index level을 기준으로 기본 연산 수행 가능
- Groupby에 의해 Split된 상태를 추출 가능함
- Tuple 형태로 그룹의 key값 Value값이 추출됨
- 특정 key값을 가진 그룹의 정보만 추출 가능
- 추출된 group 정보에는 세 가지 유형의 apply가 가능함
- Aggregation : 요약된 통계정보를 추출해 줌
- 특정 컬럼에 여러개의 function을 Apply 할 수 도 있음
- Transformation : 해당 정보를 변환해줌
- Aggregation과 달리 key값 별로 요약된 정보가 아님
- 개별 데이터의 변환을 지원함
- 단 max나 min 처럼 Series 데이터에 적용되는 데이터 들은 Key값을 기준으로 Grouped된 데이터 기준
- Filtration : 특정 정보를 제거 하여 보여주는 필터링 기능
- 특정 조건으로 데이터를 검색할 때 사용
- filter안에는 boolean 조건이 존재해야함
- len(x)는 grouped된 dataframe 개수
- Pivot Table
- 우리가 excel에서 보던 그 것!
- Index 축은 groupby와 동일함
- Column에 추가로 labeling 값을 추가하여, Value에 numeric type 값을 aggregation 하는 형태
- Crosstab
- 특히 두 칼럼에 교차 빈도, 비율, 덧셈 등을 구할 때 사용
- Pivot table의 특수한 형태
- User-Item Rating Matrix 등을 만들 때 사용 가능함
- merge
- SQL에서 많이 사용하는 Merge와 같은 기능
- 두 개의 데이터를 하나로 합침
- join method
- concat : 같은 형태의 데이터를 붙이는 연산작업
- Database connection : Data loading시 db connection 기능을 제공함
- XLS persistence
- Dataframe의 엑셀 추출 코드
- Xls 엔진으로 openpyxls 또는 XlsxWrite 사용
- Pickle persistence
- 가장 일반적인 python 파일 persistence
- to_pickle, read_pickle 함수 사용
[AI Math] RNN 첫걸음
- 시퀀스 데이터 이해하기
- 소리, 문자열, 주가 등의 데이터를 시퀀스(sequence) 데이터로 분류합니다.
- 시퀀스 데이터는 독립동등분포(i.i.d.) 가정을 잘 위배하기 때문에 순서를 바꾸거나 과거 정보에 손실이 발생하면 데이터의 확률분포도 바뀌게 됩니다.
- 시퀀스 데이터를 어떻게 다루나요?
- 이전 시퀀스의 정보를 가지고 앞으로 발생할 데이터의 확률분포를 다루기 위해 조건부확률을 이용할 수 있습니다.
- 시퀀스 데이터를 다루기 위해선 길이가 가변적인 데이터를 다룰 수 있는 모델이 필요합니다.
- Recurrent Neural Network을 이해하기
- 가장 기본적인 RNN 모형은 MLP와 유사한 모양입니다.
- RNN은 이전 순서의 잠재변수와 현재의 입력을 활용하여 모델링합니다.
- RNN의 역전파는 잠재변수의 연결그래프에 따라 순차적으로 계산합니다.
(Backpropagation Through Time (BPTT))- 기울기 소실의 해결책?
- 시퀀스 길이가 길어지는 경우 BPTT를 통한 역전파 알고리즘의 계산이 불안정해지므로 길이를 끊는 것이 필요합니다.
- 이런 문제들 때문에 Vanilla RNN은 길이가 긴 시퀀스를 처리하는데 문제가 있습니다.
이를 해결하기 위해 등장한 RNN 네트워크가 LSTM과 GRU 입니다.
피어세션 정리
- 과제코드 : 깃헙 assignment 폴더별로 나누고 commit해서 share하는 방식
- 피어세션 진행계획 수정 논의
- convolution 연산 (3차원 필터 1개 사용시 output shape)
- convolution 수식 (p,q,i,j)
- convolution dot product 대신 element-wise product 사용 이유
- 과제5 decoding_sentence 함수 코드 리뷰
- 선택과제 논의 : 선형회귀
느낀점
피어 분들과 의견 나누는 게 점점 자연스러워지고 있는 것 같아 뿌듯합니다:)
많게만 느껴졌던 강의를 거의 다 들어가고 있지만, 부족한 부분 정리하고 보완해야 할 필요가 있어보입니다,,,
차근차근 꾸준히 그리고 꼼꼼하게 공부하는 것이 중요하다는 생각이 듭니다. 생각에서 끝나지 않고 실천으로 이어질 수 있도록 노력 또 노력!! 화이팅!!!!
"Young man, in mathematics you don't understand things. You just get used to them."- 폰 노이만