Learn
-
[OOP/UML] Object OrientedLearn/OOP&UML 2022. 8. 2. 23:03
# Object Object는 unique ID, State(attribute), Behavior(operation)이 있어야 함. - State: Object의 상태 --> Encapsulation함 (밖에서 못보게; information hiding) ex. 교수일 경우 --> 이름 / 사번 / 입사일 / 전공 등 - Behavior: Object가 할 수 있는 일 ex. 교수일 경우 --> 수업하기, 학점 결정 등 object는 다른 object의 데이터를 쓸 수 없다. --> 단 get/set 함수가 열려 있으면 가능하다. (object collaboration) # Class object을 만드는 틀 class object들은 같은 attribute, operation을 가진다. (Instant..
-
[통계] 데이터와 표본분포Learn/통계 2022. 5. 18. 00:49
- 2장 읽고 정리하기- sampling 빅데이터 시대가 되면서 샘플링이 필요 없을 것이라고 생각하기 쉽다. 그러나 오히려 좋은 샘플이 더 중요해졌다. sample bias 샘플이 크다고 좋은게 아니다. 실제 미국 대통령 선거에서 1000만의 샘플이 bias가 발생하여 2000 X n개의 랜덤 샘플을 못이겼던 적이 있다. (설문조사 대상 선정 방식에서 bias 발생) 층화표본추출 (stratified sampling) 모집단을 여러 층으로 나눠서 샘플을 추출한다. 가령 백인/흑인/라틴계가 섞인 집단에서 랜덤 샘플링을 하면 라틴계가 너무 적을 수 있다. 그래서 각각의 층에서 샘플링을 할 수 있다. 대량의 데이터가 필요한 경우 예시로 검색 쿼리를 벡터로 표현하면 매우 sparse 하다. 그러므로 데이터가 많..
-
[통계] 탐색적 데이터 분석Learn/통계 2022. 5. 11. 23:52
-1장 읽고 정리하기- 평균 현실의 데이터에는 outlier가 낀 경우가 대부분이다. 늘 습관적으로 중간값을 쓰곤했는데 절사평균도 고려해보자. 절사평균은 scipy.stats의 trim_mean함수를 쓰면 된다. Robust SE쪽에서 많이 쓰던 단어인데 여기서는 outlier에 민감하지 않은 것을 이렇게 부른다. outlier outlier를 언급할 때 자주 비교되는게 noise이다. outlier는 값이 잘못되었다는 뜻이 아니며 때로는 일반 값들보다 더 의미를 가진다. 사실 anomaly detection에서 noise와 outlier를 구분하는건 현실적으로 쉽지 않다. 분산과 표준편차 표준편차는 분산에 루트를 씌운 값이다. 왜 이런걸 만들었을까 생각해본적이 없었는데 루트를 씌우면 원래의 데이터와 같..
-
[Airflow] sub dagLearn/Airflow 2022. 4. 7. 23:09
sub dag dag를 만들어 쓰다보니 잘쓰고 싶은 욕심이 들게된다. 그러다보니 점점 task를 잘게 쪼개고 병렬화도 많이 하게 된다. 나는 Graph형태로 자주 보는편인데 문제는 너무 복잡해진다. 이 때 sub dag를 쓰면 좋다. 메인 dag에서는 sub dag로 묶어서 보이니 간결해진다. 써보자 Sub Dag를 만드는건 기존의 Dag를 만드는 것과 다르지 않다. Dag를 만들고 메인 Dag에서 SubDagOperator를 쓰면 Sub Dag가 된다. 추후에 빨리 참고하기위해 코드를 남긴다만, 사용법은 너무도 다양하다. 아래처럼 작성하면 prepare_train이 끝나면 5개의 train이 병렬로 실행된다. (지금보면 별것 아니지만 Airflow 사용이 미숙해서 병렬로 실행하는 것도 한참 삽질했다....
-
5. Airflow variablesLearn/Airflow 2021. 11. 19. 21:07
조만간 업무상 bigquery에서 airflow를 쓰게될 것 같다. 그땐 아래 링크를 보고.. 일단 variable로 jump https://youtu.be/wAyu5BN3VpY Airflow에서는 key-value 쌍으로 된 variable들을 설정할 수 있다. 물론 아래와 같이 직접 DAG 코드에 작성할 수 있지만 이렇게 사용하지 말기를 권장한다. # Do not use variables like this var1 = "value1" var2 = [1, 2, 3] var3 = {'k': 'value3'} 그럼 어떻게 쓰는게 좋은건가? Web UI에서 Variable에 key-value를 등록해서 사용하길 권장한다. 다만 주의할 점은, 이 Variable들은 Airflow Metadata DB에 저장되..
-
4. Airflow conceptLearn/Airflow 2021. 11. 14. 18:04
DAG (Directed Acyclic Graph) 돌릴 task를 모아놓은걸 DAG라고 부른다. 노드간에 진행 방향이 있는 그래프를 directed graph라고 부르고 순환형이 아닌 것을 Acyclic graph라고 부른다. operator task가 어떤 행동을 할 것인지를 operator라고 부른다. operator들은 이미 많은 것들이 구현되어있고 계속해서 개발되고 있다. operator에는 세 가지 유형이 있다. ① Sensors 특정 조건이 만족될 때까지 계속 돌고 있는 operator 조건의 예시로 특정 시간을 기다린다던가 무언가 파일이 올때까지 기다리는 것이 있다. ② Operators 특정 행위를 실행시키는 operator BashOperator, PythonOperator 이런 것들이..
-
3. pipeline을 만들어보자 (+execution_date)Learn/Airflow 2021. 11. 11. 23:26
설치까지 했으면 이제 파이프라인을 만들어볼 차례다. 흘려보낼 데이터가 없어서 실습이 고민되지만 일단 한 단계씩 따라가보자. 파이프라인을 만드는 작업은 5단계로 나눠볼 수 있다. Step 1. Importing modules 필요한 라이브러리를 import하자. from datetime import timedelta import airflow from airflow import DAG from airflow.operators.bash_operator import BashOperator Step 2. Default Arguments dictionary형태로 기본 arg를 작성하자. 여기서 주의해야할건 시간이다. airflow의 시간 개념을 알고가야한다. 아래에서 start_date는 실행되는 날짜가 아니다...
-
2. 설치 및 셋업 (WSL2 / Docker / Airflow)Learn/Airflow 2021. 11. 9. 23:28
데이터를 흘려보내긴 쉽지 않지만 그래도 설치는 해봐야하지 않겠는가! 설치는 당연히 docker위에 올리는게 나을 것 같다. (유지보수, 재설치 비용 등을 감안하여..) 리눅스 환경은 어렵게 가지말고 윈도우의 wsl을 써보기로 했다. 일단 Windows 기능 켜기/끄기에서 Linux 관련 기능을 켜준 후 Microsoft Store에서 Ubuntu를 찾아서 설치해주면 된다. 도커는 이미 정리했으니 참고 https://push-and-sleep.tistory.com/4?category=863590 settings > resources > wsl integration에서 ubuntu가 나오지 않는다. ubuntu를 지운 후 다시 설치하니 이제 잡힌다. 그러고나서 해보니 잘 된다. 참고: https://www...