728x90

기본적인  kaggle-api 내용들은 다음 링크 참고

 

teddylee777.github.io/kaggle/Kaggle-API-%EC%82%AC%EC%9A%A9%EB%B2%95

 

 

 

 

우선 코랩에서 구글드라이브  연동

 

 

 

 

 

캐글 설치 및 kaggle api 클론

 

 

현재 디랙토리, 버전 확인

 

 

api 만들기

 

 

google 드라이브에 저장

 

 

캐글 위치

/content/mnt/"My Drive"/kaggle.json 조기에 있다.

 

kaggle competetitions list 명령을 줫더니 /root/,kaggle에 없다고 안된다.

 

kaggle.json 옮기기고 명령어 주기

- 옮겻더니 잘 된다.

 

 

outdated api version 에러 발생

 

- 원인 : 오래된 대회걸 가져오려고 해서 그렇다.

다음 링크 참고하면, late submission 버튼을 눌러서 진행해주면 된다고한다.

 

https://github.com/Kaggle/kaggle-api/issues/87

 

 

 

 

오래된 캐글 대회 다운 확인

- late submission을 해줫더니 오래된것도 다운된다.

 

 

 

 

 

 

 

 

300x250
728x90

할일

- train/test 분리

- voting, bagging, boosting, stacking 차이

- xgboost, lightbgm 이해

 

 

과제

- seaborn의 anagrams, attention, car_crashes, diamonds_dots 분석

- train/test 분리, 앙상블

- 하이퍼파라미터 변경하며 train, test loss 비교

 

실습

- kaggle 자전거 공유 수요 데이터셋, train/validation 분할, 모델로 데이터 예측 후 submission format에 맞춰 csv 저장

- kaggle 샌프란시스코 범죄 데이터셋. train/validation 분할, 모델 예측 후 위와 동일

 

 

 

 

train_test_split

- 훈련, 테스트 데이터셋 분리

 

 

metric, score

- 모델 평가에 대한 측도

scikit-learn.org/stable/modules/model_evaluation.html

- classification : accuracy, f1, aoc, roc 등 사용

- clustering :  mutual info score, v measure score 등 사용

- regression : mean sqare error, r2 등 사용

 

 

 

 

 

앙상블 개요

- 회귀, 분류, 클러스터링에 다양한 모델들이 존재

- 여러 모델들을 사용하여 더 좋은 모델을 구하는 방법

- voting, bagging, boosting, stacking 등

 

앙상블 기법들

- voting : 여러 모델 중 최적의 모델을 보팅 해서 선정

- bagging (boostraping and aggregation) : 데이터 분할하여 각각의 모델에 학습하여 수렴.(수평)

- boosting : 약분류기들을 가중치 주면서, 수직으로 배치.

 -> adaboost, xgboost, lightdm 등

- stacking : 이전 분류기의 출력을 다음 분류기의 입력으로 사용. boosting과 유사

 

 

 

 

 

 

seaborn car crash (voting, vagging, xgboost)

1. 데이터 로드

- total, speeding, acholog, ...

- speeding, alcohol같이 이해되는 변수도 있지만 의미를 알기 힘든 변수들도 존재

 

 

 

3.3. Metrics and scoring: quantifying the quality of predictions — scikit-learn 0.23.2 documentation

3.3. Metrics and scoring: quantifying the quality of predictions There are 3 different APIs for evaluating the quality of a model’s predictions: Finally, Dummy estimators are useful to get a baseline value of those metrics for random predictions. 3.3.1.

scikit-learn.org

 

 

 

2. 시각화

- 데이터 프레임 플롯

- 지역별 알코올

 

- 지역별 속도

 

 

 

 

3. 데이터 분할과 결정트리 회귀 분석

 

- 라벨 인코딩

 

 

 

 

 

 

4. voting

- 분류기들 설정 및 학습

- train, test 데이터 별 스코어

 

- train 데이터, 예측 정도 plot

 

 

- 하이퍼 파라미터 n_estimator 별 score plot

 

 

 

5. bagging  - estimaotrs 갯수별 score

 

 

 

6.xgboost regression 

- estimator 갯수별 score

- 변수 중요도 plot : f0가 가장 중요한 변수

- speeding이 x0이므로 total 회귀에 가장 중요한 변수

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

santander product recommendation

- 이 고객이 향후 어떤 상품을 사용할까?

www.kaggle.com/c/santander-product-recommendation/overview

 

 

데이터 설명

www.kaggle.com/c/santander-product-recommendation/data

 

 

 

 

 

 

300x250
728x90

목표

- 머신/딥러닝 기본 이론

- 데이터 취득, 분석

- matplotlib, seaborn 시각화 까지

* 숫자가 아닌 필드를 숫자로 바꾸어주자!!

 

 

 

 

빠트린거

- 볼륨 설정을 하는데 자꾸 permission denied 발생

 

 

 

 

도커 이미지 내의 

 

jovyan 폴더를 권한 777주는게 아니라

 

치프트키 님의 글을 보니 호스트 볼륨 폴더에 권한을 주어야되더라

 

chiftkey.tistory.com/3

 

 

일단 이 문재는 해결했고..

 

 

 

 

 

 

구글 클라우드 플랫폼에서 방화벽 포트도 열어주고

 

도커 런시 포트도 연결 시켜주었으나 페이지에 접속하지 못하고 있다

 

 

* 방화벽도 설정하고, jupyter 외부접속도 허용도하고

포트 포워딩도 다 했는데 왜안되나 했는더니

 

방화벽 규칙 대상을 

 

네트워크의 모든 인스턴스 적용을 안해놔서 그렇더라 

 

80 포트는 잘되는데 내가 만든 8888포트 허용 규칙이 왜안되나 했다

 

 

 

 

 

 

 

 

 docker run -p 8888:8888 --memory=2g -v ~/gitlab/ssac-pytorch-1st/exercise:/ds --name hello /jaimeps/rl-gym

 

 

 

sklearn dataset

- 아래 링크서 많이 제공

scikit-learn.org/stable/datasets/index.html

 

 

 

sklearn dataset 호출시

- load : simple data

- fetch : real world data

 

 

 

 

 

 

df.info()

- 데이터 별 개수와 타입

df.describe()

- 기술 통계량

 

 

df.plot()

- 데이터 프레임은 plot도 가능 

 

 

sns.pairplot(df)

- 변수간 모든 상관관계 plot

- 변수 자기 자신은 그냥 히스토그램 플롯

- target에 대해 hue 지정시

 

 

 

 

와인 데이터 연습

 

1. 데이터 로드

2. 데이터 정보 보기

3. 데이터 프레임 만들기

 

 

* 그룹별 크기 출력

 

4. 시각화

4.1 sns.pairplot(df)

 

 

 

 

 

 

 

300x250
728x90

 

 

지난번 수업을 들을때

 

구글 클라우드 플랫폼에서 가상 머신을 만들고

 

가상 머신에서 도커를 설치해서 이것저것을 했었는데

 

나는 계정 문제 때문에 가상머신 만드는 부분을 제대로 하지를 못했었다.

 

 

 

 

이제 와서 급하게 가상 머신을 만들고 ssh 키 등록해서 접속하는 방법을 

 

대충 검색해서 해봤다.

 

 

가상머신 만드는 방법은

 

마스터 서님의 글을 보고 참고해서 진행할 수 있었다.

 

brunch.co.kr/@topasvga/168

 

3년전의 글이긴 하지만 대부분 지금도 비슷하니 문제는 없었고 

 

 

 

 

 

조금 주의해야 하는 부분은

 

ssh키를 설정해 주어야 하는데

 

 

 

지난번 수업때 보니 

 

puttygen으로 개인키와 공개키를 만들어서 하더라

 

그런데 하는 방법은 생각 안나고 잠깐 찾아봣는데

 

kiseon님이 잘 정리해놓으신 글이 있었다.

 

medium.com/@kiseon_twt/gcp-putty-setup-%ED%95%98%EA%B8%B0-25c489e06059

 

이 글 참고해서 공개키 등록하고 가상머신 생성 후

 

푸티로 들어왔다.

 

 

 

 

안그래도 터미널을 잘 안쓰는데 iterm을 쓰다가

 

putty가 너무 밋밋하더라

 

한번 테마를 추가해보려고 조금 찾아봤다.

 

 

 

putty 테마 적용 방법에 대해서 

 

조길상 님이 잘 정리해놓으신 글이 있더라

 

m.blog.naver.com/jogilsang/221853657930

 

하면서 주의해야하는 점은

 

테마 적용전 만들어둔 세팅에는 적용이 안된다고 한다.

 

테마를 적용후 다시 인스턴스 세팅을 만들어서 저장해주자.

 

 

 

큰 차이가 있는지는 모르겠는데 아까보다는 나아보인다

 

 

 

도커를 설치해야되니

 

이전에 썻던 글을 보면서 하고

 

throwexception.tistory.com/986

* 정확히는 도커 공식 홈페이지를 보면서 ..

 

 

도커를 설치하는 중간에 순간 400mb나 된다고 해서 잠깐 놀랏다.

 

핫스팟으로 인터넷 사용 중이라 데이터 고갈되는게 아닌가 했는데

 

지금 구글 인스턴스에 접속해서 쓰고있는걸 잊고 있었다.

 

 

 

 

이미지 가져오고, 들어갓다가 나오기도 하고, 삭제하고

 

오랜만에 하면서 잘 생각은 안나지만

 

이전에 대충이나마 정리해둬서 다행이다 

 

 

 

 

---------

 

맥북이 있다보니 그래도 putty보다는 iterm으로 접속해서 사용하고 싶은데

 

지난번에 ppk를 어떻게 다룰지를 몰라서

 

제대로 찾지 못하고 한참 해맷었다.

 

blog.naver.com/windi97/220976620976

 

이 글을 참고해서 진행을 하는데

 

무슨 이유에서인지 putty부터 접속이 안되더라

 

일단 윈도우에서 ppk 만들었으니 여기서 pem을 만들고 내일 맥에서 써보려고 한다.

 

참고 : aws.amazon.com/ko/premiumsupport/knowledge-center/convert-pem-file-into-ppk/

 

 

 

 

 

 

300x250
728x90

실습 과제물...

 

1. fluentd와 몽고db로 로그 취합하는 시스템 구축

2. jupyter/datascience-notebook or jaimeps/rl-gym 등 데이터 사이언스 관련 컨테이너를 public cloud에서 구동하고 jupyter에서 접속한다.

3. pytorch를 설치한 이미지로 컨테이너를 구동한다.

 

 

 

 

www.docker.com/resources/what-container

 

도커란 무엇인가

 

 

컨테이너

- 의존성과 패키지코드가 함께 있는 추상화

- 각 머신처럼 동작 가능. os 커널은 공유

 

 

 

 

 

클라우드 컴퓨팅

- aws, 에저, 구글 클라우드 엔진

 => 구글 클라우드 엔진이 후함

 

console.cloud.google.com/

 

 

도커 설치하기 

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

 

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

 

 $ sudo apt-get update
 $ sudo apt-get install docker-ce

 

 

ref: docs.docker.com/engine/install/ubuntu/

 

Install Docker Engine on Ubuntu

 

docs.docker.com

 

 

 

도커에는

 

이미지와 컨테이너가 있다..

 

 

컨테이너 들어오기

 

docker run -i -t ubuntu:14.04

* -i : interactive

* -t : terminal

 

기존 환경에서 우분투 14.04 컨테이너로 들어왔다.

 

 

exit 명령의 경우 컨테이너 자체가 종료된다.

 

 

컨테이너

 

어플리케이션 실행하고 싶은데 실행하기 위한 공간

 

 

 

ctrl pq를 하면 다시 컨테이너 밖으로 나온다..

(exit와 달리 컨테이너 종료 x)

 

 

다시 캡처해서 보면

 

아까 컨테이너가 살아있다.

 

 

 

docker ps -a

exit 시킨 컨테이너도 나온다.

 

 

docker rm {id, name} 컨테이너 삭제하기.

 

 

삭제하려했더니 동작중이라 한다 

 

 

 

docker stop id/name

 

stop부터 해주고 다시 삭제

 

 

stoic_williamson 컨테이너 삭제 ok

 

 

 

 

centos 이미지 가져오기

 

docker pull centos:7

 

 

 

docker image ls

- 가지고 있는 이미지 목록 보기

-> 우분투 버전 14.04와 센토스 7이 추가되어있다.

 

 

docker run -it centos:latest

 

센토스 컨테이너에 들어왔다가

 

다시 컨트롤 pq로 나오자.

 

docker ps해보면 centos:latest가 돌아가고있다.

 

 

docker container prune

쓰지 않는 컨테이너 지우기

 

 

docker attach 아이디/이름 : 다시 컨테이너 들어가기

 

 

 

이미지 생성하기

docker create -it --name (이름) (기본 이미지;centos:latest)

 

 

 

다시 시작하기

docker start 이미지/id

 

 

 

 

 

 

웹서버 돌리기

 

컨테이너 80포트와 호스트 80포트 바인딩 시켜서 돌리기

 

 

 

컨테이너는 휘발성

 

이미지를 만들자.

 

놓침 ㅠㅠ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

도커 이미지

- 레지스트리에서 관리

 public, private, docker hub 같은대

 

 

 

 

 

wordpress 돌리기'

 

먼저 워드프레스용 db 부터 준비

 

mysql 돌리기, 환경변수도 다음과같이 수행

 

 

docker run -d --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress mysql:5.7 

 

 

 

'

https://hub.docker.com/_/mysql

 

 

wordpress db가 잘돌아가고있다..

 

 

 

 

'

 

 

 

이런식으로 컨테이너에 들어갈수도 있다.

 

docker exec -it wordpressdb /bin/bash

 

 

 

 

wordpress 컨테이너 돌리기

 

 

docker run -d -e WORDPRESS_DB_PASSWORD=password --name wordpress --link wordpressdb:mysql -p 80:80 wordpress 

 

 

 

 

wordpress와 wordpressdb가 잘 동작중..

 

 

 

 

 

 

 

워드프래스 페이지도 잘나온다.

 

 

 

둘다 종료하려면

 

docker rm -f wordpress wordpressdb

 

 

 

종료했다가 다시 실행하면 다날라간다..

 

 

컨테이너 -> 읽고 쓰기 가능

이미지 -> 안변함

 

이미지 추가, 삭제, 변경? => 사실 컨테이너에서 삭제, 추가, 변경됨. 컨테이너는 날라간다

 

컨테이너의 볼륨을 사용하도록 지정??

 

 

 

호스트의 볼륨을 공유 

-v 호스트 경로:컨테이너 경로

=> 호스트의 /home/wordpress_db에서 쓰면 컨테이너의 /var/lib/mysql이 반영

 

 docker run -d --name wordpressdb_hostvolume -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -v /home/wordpress_db:/var/lib/mysql mysql:5.7

 

 

- 호스트 경로에 컨테이너의 파일이 공유

 

워드프래스도 돌리자

 

docker run -d -e WORDPRESS_DB_PASSWORD=password --name wordpress_hostname --link wordpressdb_hostvolume:mysql -p 80:80 wordpress

 

 

 

 

설정도 다하고 껏다 키면

 

원래 컨테이너 내용들은 다 사라져야 정상이지만

 

호스트 볼륨에 db를 저장해놔서 껏다 켜도 사라지지 않는다.

 

 

 

 

 

로그 처리보기

 

 docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=1234 mysql:5.7

는 잘실행되지만

 

 docker run -d --name no_password_mysql mysql:5.7

 

비밀번호를 주지않는 경우 ps가 존재하지 않는다.

 

 

docker logs 이름을 주면 로그가 나온다.

 

 

docker logs no_password_mysql을 하면

 

mysql_root_password를 안준게 문제라고 나온다.

 

 

 

 

 

컨테이너 정보보기

 

docker inspect 이름

 

 

 

도커 이미지 숙지하기

 

 

컨테이너는 날라가지만 이미지는 만들수있다.

 

 docker run -it --name commit_test ubuntu:14.04

 

컨테이너에서 파일하나 만들어주고 나오자

 

 

컨테이너는 동작중

 

 

 

 

이미지 만들기

 

docker commit -a "이름" -m "메시지" 컨테이너명 저장소:태그

 

 

 

 

 

 

 

 

과제하기

 

 

2. jupyter/datascience-notebook or jaimeps/rl-gym 등 데이터 사이언스 관련 컨테이너를 public cloud에서 구동하고 jupyter에서 접속한다.

 

 

도커허브에서 풀 커맨드 카피

 

 

 

이미지 다운받고

 

docker pull jupyter/datascience-notebook

 

 

 

 

 

주피터 이미지를 돌리고, 쉘로 들어가서 외부 접속을 허용시켜주자

주피터 설정 파일에 들어가서

 

 

#c.notebookapp.allow_origin="" 는 주석을 지우고 별표

c.notebookapp.allow_origin="*"

 

 

 

 

내가만든 이미지를 확인해보니 ip 주소가 172.17.0.2 이므로

 

8888포트로 들어갈수있도록 방화벽도 오픈하자.

 

 

토큰 안나오개 하려다 망해서 그냥 패스

 

---------------------------------------

 

 

 

 

 

 

 

 

 

 docker run -d -p 8888:8888 -v /home/jupyter:/home/jovyan/work --name juyter jaimeps/rl-gym

 

로그서 토큰보고 들어가자

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. pytorch를 설치한 이미지로 컨테이너를 구동한다.

 

 정리하기 귀찬다.

 

 

jupyter/datasicn블라블라 컨테이너에들어가서

 

 

 

pip로 torch 설치

 

pip install torch

 

 

 

 

토치 설치된 컨테이너를 이미지로 만들어주자 docker commit

 

* docker commit -a "작성자" -m "메시지" 이미지만들패키지 [저장소명:태그]

docker commit -a "jdo" -m "add torch" jupyter jdo/jupyter:first

 

 

기존의 컨테이너는 지워주고

 

docker rm -f jupyter

 

 

 

 

새로 만든 이미지를 실행하자

 

docker run -d --name jupyter -p 8888:8888 -v /home/jupyter:/home/jovyan jdo/jupyter:first

 

 

주피터 컨테이너에 동작하면, 이 컨테이너의 배쉬 셸로 들어가자

 

docker exec -it jupyter /bin/bash

 

 

python 명령어로 python 인터프리터 실행

 

 

import torch

 

print(torch.__version__)

 

설치된 토치의 버전 확인까지 하면 끝 !

 

 

 

 

 

 

 

 

300x250

+ Recent posts