안녕하세요. 보랏입니다.
오늘은 어제에 이은 Docker에서 주피터 서버 연결, mysql 연결을 하였고,
머신러닝 사이킷런을 배웠습니다.
복습 바로 시작하겠습니다.
1. Docker를 이용한 jupyter notebook 사용
### docker를 이용해 jupyter notebook 이미지 파일 가져오기
docker pull jupyter/datascience-notebook
### docker의 현재 파일 모두 보여주기
docker ps -a
### docker mysql 설치하기
docker pull mysql
### 기타 명령어
docker start [컨테이너 이름] : 컨테이너 실행
docker stop [컨테이너 이름] : 컨테이너 종료
docker rm [컨테이너 이름] : 컨테이너 삭제
- 이제 docker에서 jupyter notebook을 사용할 수 있는 이미지 파일을 모두 다운받고, mysql DB까지 설치하였습니다. 이제 docker를 통해 만든 jupyter notebook 주소를 사용하여 로그인하면 됩니다.
docker run -it --rm -p 10000:8888 --name encore_sci jupyter/datascience-notebook
- 로컬서버에서 jupyter파일을 확인할 수 있도록 c드라이브에 docker_jupyter 폴더를 생성 후 연결할 수 있도록 하겠습니다.
### 주피터 노트북 폴더 연결
docker run -it --rm -p 10000:8888 -v C:\docker_jupyter:/home/jovyan/work --name encore_sci jupyter/datascience-notebook
- DB설치
- workspace에 mysql폴더에 data폴더에 db(강사님 제공 data파일)활용하여서 mysql과 연결하였습니다.
docker run -d -p 4000:3306 -e MYSQL_ROOT_PASSWORD=password --name encore_mysql -v c:/workspace/mysql/data:/var/lib/mysql mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
docker run -d --rm -p 10000:8888 -v C:\workspace\docker_jupyter:/home/jovyan/work --link encore_mysql:mysql --name encore_sci5 jupyter/datascience-notebook
- 이후 mysql에 접속하여 port : 4000, ip주소 : 127.0.0.1, name : root, 비밀번호 : 1234로 설정하여 실행하면 docker와 db가 연결됩니다.
2. 머신러닝 (Scikit-Learn)
- 사이킷런에서 제공하는 데이터 셋은 특성행렬, 타겟벡터로 Numpy의 ndarray, Pandas, scipy를 이용해 표현
- 특성행렬은 입력 데이터를 의미하며 [n_samples, n_features] 형태의 2차원 배열구조를 사용
- 타겟벡터는 입력 데이터의 라벨(정답)을 의미하며 [n_samples]형태의 1차원 배열구조를 사용
- 지도 학습 : 입력과 타겟을 전달하여 모델을 훈련한 다음 새로운 데이터를 예측하는 데 활용하는 학습
- 비지도 학습 : 타겟 데이터가 없으며 무엇을 예측하는 것이 아니라 입력 데이터에서 어떤 특징을 찾는 것이 주 목적
- 훈련 세트(Train set) : 모델을 훈련할 때 사용하는 데이터 보통 70~80%로 테스트 세트를 제외한 모든 데이터를 사용
- 테스트 세트(Test set) : 전체 데이터에서 20~30%를 테스트 세트로 사용
- fit() : 사이킷런 모델을 훈련할 때 사용하는 메서드로, 처음 두 매개변수로 훈련에 사용할 특성과 정답 데이터를 전달
- predict() : 사이킷런 모델을 훈련하고 예측할 때 사용하는 메서드, 특성 데이터 하나만 매개변수로 받음
- score() : 훈련된 사이킷런 모델의 성능을 측정
### 전달되는 리스트와 배열을 비율에 맞게 훈련세트와 테스트세트로 분리
from sklearn.model_selection import train_test_split
### 사용방법
X_train, X_test, y_train, y_test = train_test_split(data, target, random_state = 42) # random_state : 랜덤 시드
- 지도 학습 알고리즘 종류
- 분류모델(Classification) : 샘플을 몇 개의 클래스 중 하나로 분류하는 문제
- 분류모델 알고리즘 종류 : SGD Classifier, KNeighborsClassifier, LinearSVC, NaiveBayes, SVC, Kernel approximation, EnsembleClassifiers
- 회귀모델(Regression) : 임의의 어떤 숫자를 예측 및 두 변수 사이의 상관관계를 분석하는 방법
- 회귀모델 알고리즘 종류 : SGD Regressor, Lasso, ElasticNet, RidgeRegression, SVR(kernel='linear'), SVR(kernel='rbf'), EnsembelRegressor
제가 오늘 공부한 자료를 깜빡하고 놓고와서 오늘은 여기까지 작성하고
내일 추가적으로 작성하도록 하겠습니다...
감사합니다.