정리 한 번 하려다가 만날 미뤄뒀던 아이템을 광복절을 맞이하여 드디어 포스팅해본다.

 

소스코드를 Local PC에 두지 않고, 원격 서버에 저장해놓고 사용해야할 경우가 있다.

주로 실행 환경의 제약이 있어서 그렇게 해야하기도 하고,

아니면 에디터(IDE)를 따로 사용하고자 하는 경우에 그렇게 하기도 한다.

 

지금 하고자 하는 것을 그림으로 표현해보면 다음과 같다.

출처: https://www.whatwant.com

 

1. SSH

  - 일단, Local PC에서 Remote PC로 SSH 접속이 가능한 환경이어야 한다.

  - 그리고 가급적 SSH Public Key 방식으로 접근하는 것이 보안적으로도, 사용성 측면에서도 좋다.

    . SSH Public Key - SSH 공개키

    . 조금 더 알아보는 SSH Public Key

 

출처: https://www.whatwant.com

 

2. VSCode

  - Local PC에 VSCode가 설치되어 있어야 한다.

    . https://code.visualstudio.com

VSCode

 

  - Extensions 중에서 "Remote - SSH"를 선택해서 설치해야 한다.

Extensions : Remote - SSH

 

  - 설치가 완료되면, 오른쪽 메뉴에 뭔가 하나 더 추가된 것을 볼 수 있다.

Extensions : Remote - SSH

 

  - "Remote Explorer" 메뉴를 클릭하면 다음과 같은 화면을 볼 수 있다.

Extensions : Remote - SSH

 

3. Connect

  - 이제 Remote PC/Server에 연결을 해보자.

  - Remote Explorer에서 추가를 해도 좋고,

New Remote

 

  - "Ctrl + Shift + p" 해서 "Remote-SSH ..." 메뉴 중에서 "Connect Current Window to Host ..."를 선택하자.

Connect Current Window to Host ...

 

  - "+ Add New SSH Host..."를 선택하자.

+ Add New SSH Host...

 

  - 가이드 해주는대로 서버 정보를 입력하면 된다.

input

 

  - 뒤의 "-A" 옵션은 선택적이긴 하지만 같이 넣어주자.

input

 

  - 어디에 저장된 Key 값으로 입력할 것인지를 물어본다. 골라주면 된다.

select SSH Config

 

  - 접속 정보 입력은 끝났다.

  - "Connect"를 클릭하면, Remote PC/Server에 연결을 하면서 필요한 패키지들을 추가 설치한다.

Host added!

 

  - 짜잔! 되었다!

connected

 

4. Extensions of Remote

  - 그런데, 이렇게 Remote PC/Server를 연결하게 되면 기존에 사용하던 Extension들이 안보인다.

  - 필요한 것들을 하나씩 추가로 설치해줘야 된다. 이해가 되긴 하지만, 뭔가 불편하기도 하고....

Extensions

 

  - 하지만, 너무 좋다 !!!

VSCode for Remote

 

  - 지금 현재 작업하고 있는 위치가 어디인지는 오른쪽 아래 파란 내용을 보면 된다.

  - Terminal 환경도 너무 편하고, 작업 후 저장한 것이 바로 Remote PC/Server에 반영이 되니 이거 뭔가 좋다 !!!

 

 

반응형

'Programming' 카테고리의 다른 글

NAVER 서비스 API 사용 준비  (0) 2024.11.22
개발자라면 ... Google for Developers  (0) 2023.12.06
개발자들을 위한 AI 검색엔진 - phind  (0) 2023.04.30
Naver API 사용 준비하기  (0) 2019.04.07

요즘 저녁에 러닝을 하기 위해 격일로 조금 일찍 퇴근을 하는데.

비 예보가 있다는 것을 미처 인지하지 못해서 일도 못하고 러닝도 못하는 그런 사태가...

 

이런 핑계(?)로 갑자기 날씨 정보를 API로 얻어오는 것을 한 번 해보고 싶어졌다.

갑자기? 갑자기!

 

날씨 정보를 어디에서 얻어와야 할까!?

당연히 기상청 !!!

https://www.data.go.kr/data/15084084/openapi.do

 

무료인데다가 심지어 샘플 코드까지 제공해주고 있다.

샘플코드 - Python

 

사용을 위해서는 오른쪽 상단에 위치한 "활용신청"을 클릭하면 된다.

활용신청

 

적절한 내용으로 작성하여 신청하면, 즉시 승인이 된다.

신청 결과

 

상세 내용을 보면 다음과 같이 인증키 정보를 확인할 수 있다.

상세 내용

 

이제 잘 동작하는지 검증을 해보자.

 

1. Python 환경을 맞춰야 한다.

- requests 모듈을 사용하기 위해 설치가 필요하다.

 

2. 지역 위경도값을 확인하자.

- 공공데이터 포털에서 제공하는 참고문서를 다운로드 받아야 한다.

  . 기상청41_단기예보 조회서비스_오픈API활용가이드_(240715).zip

 

- 압축을 풀면 문서 파일이 2개 나오는데, 위경도 정보가 있는 엑셀 파일을 확인하면 된다.

 

- 내가 확인하고자 하는 지역의 X, Y 값을 확인하면 된다.

 

3. 코드 작성

- 다음과 같이 간단한 코드를 작성해보자.

  . API 키는 일반 인증키(Decoding )으로 사용했다.

 

- 실행 결과는 다음과 같이 나온다.

 

 

각 값들의 의미나 활용 관련하여서는 다운로드 받은 참고 자료 中 워드 파일을 살펴보면 된다.

sample

 

일단 기본적인 확인을 해봤으니,

아침에 자동으로 알람 오도록 만들어봐야겠다! ^^

반응형

cron에 대해서 그동안 한 번쯤은 포스팅 했을 줄 알았는데, 찾아보니 없어서 이번 기회에 한 번 정리해본다!

 

cron

- 주기적으로 실행해야 하는 작업(task)을 관리하기 위한 시간 기반 잡-스케줄러(Job Scheduler)

- 사용자들은 crontab 파일을 사용하여 특정 시간에 특정 명령이나 스크립트를 실행하도록 설정

- 시스템 유지보수 작업, 데이터 백업, 로그 분석 등 다양한 자동화 작업을 주기적으로 수행하는 데 사용

 

Linux 사용자라면 누구나 알고 있지만, 의외로 누구나 사용하지는 않는/못하는 도구이다 !!!

 

Unix 계열이라면 어디에나 존재하고 있는 시간 기반의 잡-스케줄러이고,

아주 기본이 되는 도구이다보니 이를 기반으로 동작하는 다른 유틸리티도 다양하게 존재하고 있다.

 

 

Etymology(어원)

 "cron"이라는 명칭은 어디에서 비롯되었을까?

 

- 그리스 신화에서 "시간의 본질"을 상징하는 신 "Chronos"에서 비롯되었다고 한다.

  . https://en.wikipedia.org/wiki/Cron

  . 왠지 시계 관련하여 많이 들어본 이름인 것 같다~

출처: chatgpt (by whatwant)

 

 

History (역사)

- 시작은 1975년 그 유명한 "AT&T Bell 연구소"에서 탄생되었다고 한다.

- Linux의 등장과 함께 다양한 cron alternative들이 등장하게 되는데

- 현재 가장 널리 퍼진 것은 1987년에 탄생된 vixie-cron 이라고 한다.

  . https://github.com/vixie/cron

https://github.com/vixie/cron/blob/master/Documentation/Changelog.md

 

- Red Hat에서 vixie-cron 4.1을 fork해서 만든 cronie 프로젝트도 있고,

  . https://github.com/cronie-crond/cronie

- vixie-cron과의 호환성을 보여주는 mcron 프로젝트도 있다.

  . https://github.com/Dale-M/mcron

 

 

Check

이번 포스팅을 작성하는 환경은 "Ubuntu 20.04.6 LTS" 이다.

다른 환경에서도 얼추 비슷하지 않을까 하지만, 혹시라도 다른 결과가 나올 수도 있다는 점은 유념 !!!

 

- 패키지 설치 여부

  . dpkg -l | grep cron

 

- 실행파일 위치

  . which cron

 

- 서비스 상태

  . systemctl status cron

출처: https://www.whatwant.com

 

 

crontab

- "cron table"의 약자로써, cron 데몬이 실행해야할 작업들의 스케줄을 정의한 테이블을 의미한다.

- 테이블을 작성/수정할 수 있도록 해주는 유틸리티 명칭이기도 하다.

- 첫 실행을 하면 어떤 에디터를 사용할 것인지 물어본다.

  . 개인적으로 애용하는 nano 에디터를 추천해줘서 더 반갑다!!! ^^

select-editor

 

- 정확히 표현하자면, 현재 사용하는 계정에서 처음 실행할 때 기본 에디터를 설정해주는 것이다.

crontab -e

 

- 각 계정별로 하나의 (cron) table이 주어진다.

- 간단한 가이드를 주석(#)에서 확인할 수 있다.

 

- cron 관련해서 항상 우리를 괴롭히는 익숙하지 않은 시간 표현 순서 !!!

 

 

- dom : day of month

- dow : day of week

 

- 잘 동작하는지 한 번 테스트 해보자.

sample

 

- 이미 알고 있겠지만, " * "는 every를 의미한다. 즉, 매분마다 환경변수들을 /tmp/env.output에 저장하게 된다.

 

 

Seperator (구분자)

정보를 입력할 때 각 값들을 구분하기 위해서 기본적으로 space 한 칸을 사용했을 것이다.

만약 space 두 칸을 사용해도 괜찮을까? 괜찮다! 여러개의 space를 사용해도 잘 인식한다.

심지어 tab을 사용해도 된다 !!!

 

 

Represent (표현식)

- 기본적인 내역은 다음과 같다.

 

- 특수 문자들은 다음과 같다.

 

 

Example (예시)

몇 가지 사례를 들어보자. ( "?"는 사실 낚시성일까나..... ㅋㅋ )

 

- 매일 오전 10시 15분에~

 

- 매일 오후 3시에 시작해서 5분마다 실행되어 오후 3시 55분에 끝나고,

  다시 오후 7시에 시작해서 5분마다 실행되어 오후 7시 55분에 끝남

 

- 매일 00시 30분부터  6시간 마다 실행 (00:30, 06:30, 12:30, 18:30)

 

 

- 평일(월요일~금요일) 1시 30분 부터 매 6시간 마다 실행 (01:30, 07:30, 13:30, 19:30)

 

 

Log

Ubuntu 환경에서 cron 로그를 위한 기본 경로는 "/var/log/cron.log" 이다. 하지만,

 

로그 기록을 활성화 시켜줘야 한다.

 

주석 처리 되어 있는 cron 부분을 확인 후, 주석 제거하고 저장하면 된다.

 

서비스 적용을 위해 rsyslog 재시작을 한 번 해주면 된다.

 

이제 cron이 잘 동작했는지 확인할 수 있는 로그를 볼 수 있게 되었다.

 

 

Remove (삭제)

현재 crontab 내역을 확인하고 싶으면 "-l" 옵션을 사용할 수 있다.

 

전체 내용을 삭제하고 싶다면, "-r" 옵션을 사용할 수 있다.

 

특정 스케줄만 삭제하고 싶다면? "-e" 옵션으로 편집 화면에서 해당 라인을 삭제하면 된다 !!!

 

 

Helper (도우미)

① CronTool (https://tool.crontap.com/cronjob-debugger)

   - 오른쪽 하단위 Cheetsheet를 보면 hour 부분에 Values Range 오타가 조금 아쉽긴 하지만,

 

  - 깔끔한 화면과 함께, 달력으로 설정 내역을 보여주는 것이 정말 괜찮다.

 

 

② Cronitor (https://crontab.guru/)

  - 정말 simple하고 URL 주소를 외우기도 쉽다.

 

 

③ CronMaker (http://www.cronmaker.com/?1)

  - 원하는 cron 표현식을 쉽게 만들 수 있도록 편리한 인터페이스를 제공해주고 있다.

 

 

지금까지 살펴본 내용 외에도 더 많은 것들이 남아있다.

cron의 세계는 의외로 넓다 !!

 

하지만, 한 번에 너무 많은 것을 알게 되면 다칠 수 있으므로(?) 여기에서 일단 마무리 해보련다 !!!

절대 지쳐서 그런 것 아니다! (그런가? ^^)

 

반응형

가족 여행 및 대학원 MT로 인해... 엄청난 지각 공부를 한다.

미리 하지 못했음에 대해 반성 !!!! 무릎 꿇고 반성 !!!

 

05-1 결정 트리 (Decision Tree)

- 로지스틱 회귀 (Logistic Regression)

- 결정 트리 (Decision Tree Classifier), 가지 치기(Prunning)

 

05-2 교차 검증과 그리드 서치

- 검증 세트 (validation)

- 교차 검증 (Cross Validation)

  . 분할기(Splitter)를 사용한 교차 검증 : StratifiedKFold

- 하이퍼파라미터 튜닝 (Hyperparameter Optimization)

  . 그리드 서치 (GridSearchCV)

  . 확률 분포 선택 : uniform, randint

  . 랜덤 서치 (RandomizedSearchCV)

 

05-3 트리의 앙상블 (Ensemble)

- 정형 데이터와 비정형 데이터

  . 텍스트/오디오/이미지/영상 등의 비정형 데이터는 주로 DL 에서 취급

- 랜덤 포레스트 (RandomForest)

- 엑스트라 트리 (ExtraTrees)

- 그래디언트 부스팅 (Gradient Boosting)

- 히스토그램 기반 그래디언트 부스팅 (Histogram Gradient Boosting)

- XGBoost vs LightGBM

 

 

 

 

기본 숙제 : 교차 검증을 그림으로 설명하기

 

추가 숙제 : 앙상블 모델 손 코딩

- 전체를 캡처하는 것은 무의미한 것 같아, 하단부 부분만 캡처 !!!

 

반응형

 

어느덧 벌써 4장을 공부하고 있는 3주차가 되었다.

만날 일요일 밤에 벼락치기하고 있는 불량한 참가자 신세이지만....

이렇게라도 공부하려하는 스스로를 기특해 해야지 !!!!! 쓰담~ 쓰담~

 

 

04-1 로지스틱 회귀 (Logistic Regression)

- 분류 (Classifier) 모델

- vs. KNeighborClassifier

- 이진 분류 : 시그모이드(Sigmoid)

- 다중 분류 : 소프트맥스(Softmax), parameter C

 

04-2 확률적 경사 하강법 (Stochastic Gradient Descent)

- 점진적 학습 → 확률적 경사 하강법

- 손실함수 (loss function)

- 로지스틱 손실 함수 (logistic loss function, Binary Cross-Entropy loss function)

- partial_fit()

 

 

가제트 형사를 그려주신 것 같은데... MZ(GenZ?) 분들은 아시려나!? ㅋㅋㅋ

 

 

 

Homework

 

 

[기본 숙제]

 

 

- ① 시그모이드 함수(Sigmoid Function)

 

→ 기본적으로 선형 함수만 사용하는 경우 결과값이 너무 커지거나 너무 작아질 수 있으므로

     비선형 함수를 이용하여 값을 수렴하게 만드는 것이 계산하기에 용이해진다.

     이 때, 로지스틱 회귀에서 이진 분류를 사용하는 경우 시그모이드 함수를 이용하면

     0에서 1사이의 값으로 변환이 되며, 0.5를 기준으로 0과 1로 결과를 판단하기에 적합하다.

 

[추가 숙제]

반응형

 

고작 2주차인데, 뭔가 많다!

그런데, 여기서 끝이 아니라 뒤에 좀 더 있다!!!

 

다시 한 번 느꼈지만, 이 책은 절대 초보자를 위한 책이 아니다 !!!

 

03-1. K-최근접 이웃 회귀 (K-NN Regression)

- n_neighbors 파라미터를 이용하여 최근접 이웃과의 거리 평균을 이용하여 회귀

- 과대적합 vs. 과소적합

- n_neighbors 값 변경을 통해 과대적합, 과소적합 이슈 해결

 

03-2. 선형 회귀 (Linear Regression)

- coef_, intercept_

- 과대/과소 적합 이슈 → 다항 회귀

 

03-3. 특성공학과 규제

- 다항 특성 만들기 : PolynomialFeatures

- 규제 전에 표준화 : StadardScaler

- Ridge & Lasso

 

 

기본 숙제

동영상 강의에 얼추 나와있는 내용이라 어렵지 않다 ^^

 

n_neioghbors 값을 바꿔가면서 예측하고, 이것을 그래프로 표현하면 된다.

 

눈으로 봐도 얼추 5값이 적당하지 싶다~

 

추가 숙제

[ 모델 파라미터에 대해 설명하기 ]

 

파라미터는 머신러닝 및 딥러닝 모델의 핵심 요소로써,

모델이 데이터를 통해 학습하고 예측을 수행하는 데 필요한 내부 변수들을 의미한다.

이 값들을 적절히 조정하게 되면 모델은 주어진 문제를 효과적으로 해결할 수 있게 된다.

 

K-최근접 이웃 회귀(K-NN Regression) 챕터에서 n_neighbors 값을 조정하면서

과대적합이나 과소적합 문제를 완화하는 과정을 앞에서 살펴보았는데

여기에서 n_neighbors가 바로 모델 파라미터 중 하나이다.

 

 

반응형

첫 주는 조금 여유로울줄 알았는데, 공부할게 많다.

 

 

02-1. 훈련 세트와 테스트 세트

확인 문제를 통해 이 부분을 공부해보자.

 

1. 머신러닝 알고리즘의 한 종유로서 샘플의 입력과 타깃(정답)을 알고 있을 때 사용할 수 있는 학습방법은 무엇인가요?

- 머신러닝은 크게 지도학습과 비지도학습으로 구분할 수 있고, 정답을 알고 있는 경우 지도학습을 적용한다.

→ ① 지도학습

 

2. 훈련 세트와 테스트 세트가 잘못 만들어져 전체 데이터를 대표하지 못하는 현상을 무엇이라고 부르나요?

- 훈련 세트와 테스트 세트를 만들 때 전체적인 데이터 분포를 유지하는 것이 중요하며 그렇지 못한 경우 편향을 보인다.

→ ④ 샘플링 편향

 

3. 사이킷런은 입력 데이터(배열)가 어떻게 구성되어 있을 것으로 기대하나요?

- 문제 해석이 조금 오해의 여지가 있어 보이지만, 특성은 열(column)로 나열되어 있고 데이터의 구분은 행으로 된다.

→ ② 행: 샘플, 열: 특성

 

 

 

02-2. 데이터 전처리

이 책은 초보자를 위한 수준은 아닌 것 같고, 기본 지식이 좀 있어야 따라갈만한 것 같다.

어쩐지 처음 이 책으로 공부할 때 왠지 자괴감이 좀 들더라니..... ㅠㅠ

 

분산 = 기대값(평균)으로부터 얼마나 떨어진 곳에 분포하는지를 가늠하는 숫자

표준편차 = 분산의 제곱근

 

 

표준화(Standardization) = 평균을 0, 분산을 1로 만들어주는 스케일링 기법 (Z-Score 활용)

 

기본이 될만한 것들을 같이 정리하면서 공부해봐야겠다.

반응형

새해를 맞이하여 야심찬 목표를 세우고 힘차게 달리다가 ... 살짝 지치기도 하고 ... 번아웃도 오고 ...

그러던 와중 또 다시 심장을 뛰게 해주는 혼공학습단 12기 모집 공지를 발견했다 !!!

 

그리고, 정말 고맙게도 지원을 받아주셔서 12기로 활동(공부?)하게 되었다 !!!

 

이번에 공부할 책은 바로~ 바로~

"혼자 공부하는 머신러닝+딥러닝"

 

책을 구매한지는 정말 오래되었는데, 사실 완독하지는 못했었다.

예전에 무심코 지나갔던 책 안의 중요한 정보~!!!

 

이제서야 함께 합니다 !!!

 

 

6주 코스, 열심히 완주해야지 !!!

https://hongong.hanbit.co.kr/혼공-게시판/?uid=162&mod=document&pageid=1

 

개인적으로 너무나 존경하고 애정하는 "박해선"님의 서적인만큼,

책 자체의 퀄리티도 너무나 훌륭하고 예제 및 동영상 등 부수적인 부분들도 너무나 훌륭하다.

https://www.youtube.com/playlist?list=PLVsNizTWUw7HpqmdphX9hgyWl15nobgQX

 

저 동영상 녹화할 때 몇 번 라이브에 참여도 했었는데 ^^

 

 

우리를 공부시키기 위해 박해선님은 정말 많은 고민을 하시는 것 같다 ^^

 

챕터 구성에 대해서도 많은 고민의 흔적이 엿보인다.

 

 

 

뭔가 서론이 길었다!

이제 시작해보자.

 

 

Chapter 01. 나의 첫 머신러닝

 

 

01-1. 인공지능과 머신러닝, 딥러닝

박해선님은 직접 그린 그림과 글씨를 좋아하시는 것 같다 ^^

https://www.youtube.com/watch?v=J6wehCO_c58

 

 

 

01-2. 코랩과 주피터 노트북

이제는 이 책이 나온지도 조금 시간이 지나서

사용한 도구/패키지들의 버전들이 좀 옛날 것들이다.

 

Colab에 들어가서 기본적으로 설치된 Python 버전만 확인해봐도 좀 차이가 발생한다.

https://colab.research.google.com/

 

직접 실습들을 해보면서 버전 차이로 발생하는 것들이 있는지 확인해보면 재미있을 것 같다.

 

 

 

01-3. 마켓과 머신러닝

타이틀이 조금 웃기는데, 저런 제목이 나온이유는 다음과 같다.

https://www.youtube.com/watch?v=GOCVVSMeIf8

 

머신러닝을 공부하기 위해서 문제 상황을 다음과 같이 가정해보자.

- 생선을 파는 마켓이 있다.

- 생선의 크기나 무게를 가지고 그 생선이 무엇인지 맞추고 싶다.

 

동영상 강의 듣다보면 소음(?) 이슈가 있는데,

라이브로 참여했었을 때 마이크 켜 놓은 참석자가 한 명 있어서 조금 짜증났던 기억이 있다.

메시지로 그 사람한테 계속 뭐라했는데 강의를 듣지도 않았던 것 같고 메시지도 보지도 않았던 나쁜 사람 !!! ㅋㅋㅋ

 

첫 실습 내용인데,

첫번째 실습 내용부터 이렇게 쭉~ 진도를 나간다는 것이 조금 당황스럽기는 한데 ...

 

일단 Chapter01 진도는 여기까지!

반응형

+ Recent posts