[SK네트웍스 패밀리 엔코어AI캠퍼스] AI 머신러닝 캠프 1기_7월 4주차 회고

[SK네트웍스 패밀리 엔코어AI캠퍼스] AI 머신러닝 캠프 1기_7월 4주차 회고 엔코아 AI 캠퍼스에서 첫 주는 Orientation과 하루 일정의 교육이 이루어 지다 보니, 이번 주가 본격적인 첫 주라고 봐야 할 것 같다. 정말 시간이 눈 깜짝할 사이에 지났다. 이번 주는 AI 개발자의 가장 기본이 되는 Python Programming 능력을 다지고, 실제 데이터 분석 의 핵심인 데이터 수집과 전처리 기술을 습득하는 매우 중요한 시간이었다. Python의 핵심 문법부터 라이브러리를 활용한 실무 기술까지, 적지 않은 양을 학습했고, 학습한 것들을 정리해 본다. 1. Python Programming 문법 가장 먼저 프로그래밍의 기초가 되는 변수와 제어문을 시작으로 코드의 재사용성을 높여주는 함수와 복잡한 데이터를 효율적으로 다루기 위한 자료구조를 학습했다. (1) Python 핵심 문법 정리 - 제어문 : if, for, while 등 조건에 따른 흐름 제어 및 반복 작업 수행 - 자료구조 : 리스트(List), 튜플(Tuple), 딕셔너리(Dictionary), 세트(Set) 등 데이터 특성에 맞는 저장 및 관리 - 함수(Function) : 코드의 논리적 단위 분리, 매개변수와 반환 값을 활용한 코드 재사용성 극대화 # 자료구조와 함수 활용 예시 def process_data(data_list): result = {} for item in data_list: if item not in result: result[item] = 1 else: result[item] += 1 return result data = ['apple', 'banana', 'apple', 'orange', 'banana'] count_result = process_data(data) print(count_re...

파이토치(PyTorch) 입문 가이드

이미지
 파이토치(PyTorch) 입문 가이드 처음 딥러닝(Deep learning) 을 학습할 때, 가장 먼저 고민되는 것이 '어떤 도구를 사용해야 할까?' 일 것이다.  현재 딥러닝 분야를 양분하고 있는 두 가지 거대한 산맥은 Google 의 텐서플로우(TensorFlow) 와 메타(Meta) 의 파이토치(PyTorch) 이다. 그중에서도 최근 인공지능 연구자들과 개발자들 사이에서 가장 압도적인 사랑을 받고 있는 것이 파이토치(PyTorch)이다. 이제부터 딥러닝 학습자의 눈높이에 맞춰 파이토치가 무엇인지, 왜 이토록 인기가 많은지 핵심 개념들을 정리와 함께 배워보겠다.

모듈화 : 상품 할인 계산기

이미지
모듈화 : 상품 할인 계산기 Python에서 기능 별로 쪼개서 특정 기능이 필요할 때 호출해서 사용하는 것이 모듈(Module) 이다. 상품을 구입하는 수량에 따라 얼마나 할인된 가격에 구입하게 되는지 알려주는 '상품 할인 계산기'를 통해 구현해 본다. 1. 모듈화의 장점 하나의 파일에 모든 코드를 넣으면 나중에 코드가 길어질 때 관리하기가 매우 어려워 질 수 있다. 기능을 별도의 파일(모듈, Module)로 분리하면, - 코드 재사용 : 제작해 둔 기능을 다른 프로그램에서도 바로 호출해서 재사용 가능 - 유지 보수 : 수정이 필요할 때 해당 모듈 파일만 수정 가능 - 가독성 : 전체적인 로직의 흐름을 파악 하기 수월 상품 할인 계산기 - 모듈 & 실행 2. 모듈(Module) 구현 예시 - 상품 할인 계산기 (1) 할인 계산 모듈 (exercise_08.py) # exercise_08.py # 천 단위 쉼표를 찍어주는 함수 def fNumber ( n ): return format (n, ',' ) def calculatorTotalPrice ( gs ): # 예외 처리: 구매 상품이 없을 때 if len (gs) <= 0 : print( '구매 상품이 없습니다.' ) return rate = 25 # 기본 할인율 totalPrice = 0 # 할인율을 담은 딕셔너리 (Key: 개수, Value: 할인율) rates = { 1 : 5 , 2 : 10 , 3 : 15 , 4 : 20 } # 리스트의 길이(구매 개수)를 활용해 할인율 찾기 if len (gs) in rates: rate = rates[ len (gs)] # 총액 계산 (할인 적용) for g in gs: totalPrice += g * ( 1...

재귀(Recursion) 함수

이미지
 재귀(Recursion) 함수 Recursion's Structure 1. 재귀(Recursion)의 의미 사전적 의미의 재귀(Recursion)는 '되풀이되는 것' 이라는 의미를 갖고 있다. 프로그래밍에서의 재귀 함수는 함수가 자기 자신을 다시 호출하는 구조 를 말한다. 쉽게 말해, 큰 문제를 해결하기 위해 스스로를 호출하여 더 작은 단위로 쪼개고, 그 작은 문제들이 해결될 때까지 반복하는 방식이다. 2. 재귀(Recursion) 함수의 핵심 요소 재귀 함수를 작성할 때 가장 중요한 것은 '언제 멈출 것인가?'를 결정하는 것이다. 종료 조건(Base Case)이 없으면 함수는 자기 자신을 무한히 호출하다가 결국 RecursionError 를 발생하게 된다. 3. 실전 예시 : 팩토리얼(Factorial) 계산 가장 대표적인 재귀 예시인 팩토리얼을 통해 확인할 수 있다. 5! = 5 x 4 x 3 x 2 x 1 def factorial(n):     # 1. 종료 조건: n이 1이면 1을 반환     if n == 1:          return 1     # 2. 재귀 호출: n * (n - 1)의 팩토리얼 계산     return n * factorial(n - 1) print(factorial(5)) # 결과는 120 <코드 설명> -  if n == 1  : 재귀를 멈추는 조건 -  return n * factorial(n - 1)  : 문제의 크기를 1씩 줄여가며 자기 자신을 다시 호출 4. 재귀가 동작하는 구조 : 스택(Stack) 재귀는 호출될 때마다 메모리의 스택(Stack)영역에 차곡차곡 쌓인다. 5에서 시작해 1까지 내려갔다가, 다시 1부터 계산 결과를 가지고 올라온다. { 함수 호출이 빈번할 경우, for, while 같은 반복문을 사용하는 것이 메모리 사용 ...

안전한 협업을 위한 git 브랜치(Branch) 가이드

이미지
안전한 협업을 위한 git 브랜치(Branch) 가이드 git의 핵심 기능 중 하나인 ' 브랜치(Branch) '는 여러 작업을 동시에 진행하거나 협업할 때 필수적인 개념이다. 개발을 하다 보면 작업 중인 기능 외 다른 버그 수정의 필요성이 있거나, 기능을 실험적으로 구현해 보고 싶은데 메인 코드가 손상되면 안되는 상황에서 사용하는 것이 바로 '브랜치(Branch)'이다. 브랜치(Branch)를 활용해 안전하게 버전을 관리하고 발생할 수 있는 충돌(Conflict)을 해결하는 방법에 대해 확인해 보자. 1. 브랜치(Branch) 정의 브랜치는 ' 나뭇가지 '라는 뜻이다. 메인 코드 줄기(Main/Master)에서 갈라져 나와, 독립적인 작업 공간 을 만드는 것이다. 브랜치를 사용하면 여러 명이 협업해서 프로젝트를 작업해도 서로의 코드에 영향을 주지 않는다. 내 브랜치에서 코드를 엉망으로 만들어도, 메인 코드는 깨끗하게 유지된다. 이처럼 브랜치 만큼 안전한 실험 공간은 없다. 2. 브랜치 활용 3단계 핵심 명령어 브랜치를 다루는 가장 기본적인 흐름은 다음 3단계이다. (1) 브랜치 생성 및 이동 -  git branch <이름>  으로 생성하고,  git checkout <이름>  (또는  git switch <이름> ) (git bash) branch - checkout (2) 독립적인 작업 - 이동한 브랜치에서 코드를 수정하고 index에 등록(Add) 하고 커밋(Commit) 한다. 이 커밋들은 메인 브랜치와는 별개의 작업물이 된다. (3) 병합(Merge) - 작업이 완료되면 메인 브랜치로 이동해  git merge <이름>  실행을 통해 작업을 합친다. (git bash) Merge 3. 브랜치 병합 시, 발생하는 충돌(Conflict) 해결 작업(브랜치)을 합칠 때, 서로 다른 사람이 같은 파일의 같은 부분을 수정했다면, git은 충돌...

git 명령어를 활용한 팀 프로젝트에서 충돌(Confilct) 해결

이미지
 git을 활용한 팀 프로젝트에서 충돌(Confilct) 해결 팀 프로젝트를 진행하다 보면 다른 팀원과의 작업물 충돌은 피할 수 없는 과정일 것이다.  CONFLICT (content) : Merge conflict in...  작업자 사이 코드가 꼬여서 불가피한 혼란이 당황스럽지만, 원리만 알면 협업의 효율성을 높이는 필수 과정이다. 팀 작업 시, 필수적인 fetch, pull, merge 명령어를 활용해 충돌 해결 방법을 확인해 보겠다.

Git(로컬 컴퓨터)에서 작업한 결과물을 GitHub에 Push(올리기)

이미지
로컬 컴퓨터에서 작업한 결과물을 GitHub에 올리는 법 로컬 컴퓨터에서 열심히 작업한 결과물을 안정적으로 관리하기 위해, 그리고 팀원들과 협업을 하기 위해서 온라인 저장소인 GitHub에 올리는 것을 추천 한다. 이번에는 앞서 얘기한 대로 로컬 컴퓨터와 GitHub의 연동 방법에 대해 확인해 보겠다.

git 명령어 매뉴얼(Help)과 공식 문서 활용하기

이미지
 git 명령어 매뉴얼(Help)과 공식 문서 활용하기 개발을 하다 보면 git 명령어가 가물가물해질 때가 있다. "이 명령어의 정확한 옵션이 뭐였지?", "강제로 실행하려면 키워드가 뭐였지?" 등등... 결국, 검색 포털 사이트(google, naver 등)에 접속해서 찾아보게 된다. 하지만, 공식적이고, 빠르면서, 정확한 해답은 가까운 곳에 있다. 이번엔 git 매뉴얼 활용 에 대해 확인해 보겠다. google 검색 결과 화면