Hyunn

[KT AIVLE School] AI트랙 1주차 후기 본문

Study/KT AIVLE School

[KT AIVLE School] AI트랙 1주차 후기

Ravié 2024. 2. 25. 01:07
728x90
반응형

1주차 일정

02.20: Opening Day
02.21: Git & GitHub
02.22 ~ 2.23: Python 프로그래밍 & 라이브러리

02.20 - Opening Day

드디어 에이블스쿨이 시작되는 날이다!

오프닝 데이는 말 그대로 입학식 느낌이다. 주현영 배우님과 허훈 선수가 에이블스쿨 입과를 축하해주셨다.

 

그리고 4기 선배 에이블러분들과의 간단한 Q&A시간을 가지고 반별 OT를 진행했다.

에이블스쿨은 1반~10반으로 나눠져 있다. 수도권은 1반~6반이고 한 반에는 대략 26명?정도 있는 것 같다. 아직 1주차라서 우리반에 누가 있는지 잘 모른다.

 

반별 OT가 끝나고 KAIST 조대곤교수님께서 데이터 기반 의사결정과 활용전략을 주제로 특강을 해주셨다.

 

그렇게 첫 날 오프닝 데이가 끝나게 되었다.

 

앞으로 6개월동안 소속을 갖고 활동을 한다는 점에서 기대가 되며 한편으로는 걱정도 들었다. 나처럼 AI를 처음 접하는 사람도 있지만, 일명 "고인물"인 사람도 꽤 있는 것 같았기 때문이다. 에이블스쿨은 장기전이기 때문에 체력관리하며 규칙적으로 참여하는게 중요하다고 생각이 들었다.

 

오프닝데이에서 개인적으로 아쉬웠던 점은 에이블스쿨은 대면과 비대면을 병행하는 블렌디드 수업으로 이루어지는데 오프닝데이 만큼은 대면으로 이루어졌으면 어땠을까 하는 생각이 있다.

 


 

02.21 - IT 프로젝트 관리도구 - GIT

첫 날은 협업을 위해 필수적으로 알아야하는 Git에 대해 이고잉 강사님께서 강의를 해주셨다. 정말 처음부터 차근차근 실습과 이론을 병행하며 알려주신 점이 좋았다.

 

VScode에서 Commit, add하기, Git Graph확인하기

- commit은 내가 작성한 코드를 로컬저장소에 기록하는 것이다. (구매)

- add는 commit할 코드(파일)를 stage area에 저장하는 것이다. (장바구니)

- Git Graph를 보면 commit과 Branch등 Git로그들을 GUI형식으로 확인할 수 있다. (구매내역)

Git Graph

Git의 원리

Git은 3개의 Area로 관리된다.

- Working directory: 현재 작업하고 있는 파일을 관리하는 공간이다. 파일 명과 내용(content)가 분리되어(아래 표와 같이) 저장된다. 

- Stage Area: "add"를 하면 Stage Area로 이동한다. 이 때도 파일 명과 내용은 분리되어 저장된다.

- Repository(.git): "commit"을 하면 로컬저장소에 저장된다. 아래 두 번째 표와같이 저장된다. commit id는 파일 명과 내용의 Hash값으로 정해진다. 즉, 파일 내용이 달라지만 다른 commit id를 부여받는다.

- pointer(HEAD, main): 후술

name content
work1.txt xxx
work2.txt yyy
message files(tree) parent commit id
name content
v1 work1.txt xxx   84f1f
v2 work1.txt xxx 84f1f f974c1
work2.txt yyy

Head와 main의 차이

저장소를 만들면 기본적으로 HEAD가 생기고 이 HEAD는 main을 가리킨다. 새로운 버전을 만들고 commit을 하면 생성된 commit ID는 HEAD가 가리키는 main에 기록된다. 즉, HEAD -> main -> A 형태가 된다. 다시 새로운 버전 B를 만들게 되면 다음과 같은 형태가 된다. HEAD -> main -> B, B -> A

정리하자면 HEAD는 현재보고 있는 버전, main은 가장 최근 버전이라고 생각하면 쉽다. 

다른 표현으로, 시간여행을 하고 있다면 HEAD는 현재시간이다. 즉, 내가 하고 있는 시간여행지의 현재 시간이다. 반면, main은 내가 시간 여행을 출발한 시점의 시간이다. 따라서 Git Graph에서 checkout을 하면 main이 바뀌는 것이 아닌, HEAD가 바뀐다.

Branch란?

main과 같은 분기 시점을 또 하나 만드는 것이다. 시간 여행으로 다시 얘기를 하자면 또 하나의 우주를 만드는 것이라고 생각할 수 있다.

충돌

Branch후 main과 merge(합병)하려고 할 때, 발생할 수 있는 문제다. 충돌이 발생하면 "망했다!" 가 아니라 "미리 알려줘서 다행이다!"라고 생각하라고 하셨다,,ㅎㅎ

main버전과 exp버전(Branch를 한 main과 다른 버전)에서 서로 작업 후 merge할 때, 같은 파일인데 서로 다른 내용이 있다면 어떤 버전을 선택해야할까 하는 문제이다. 이 때에는 사용자가 지정해주어야 한다.

GitHub

GitHub는 로컬 저장소(Git) 내용을 원격 저장소(GitHub)에 업로드 할 수 있게 해준다.

-clone: 원격 저장소에 있는 모든 작업을 로컬로 불러올 수 있다.

- Fetch: 원격 저장소에 있는 파일을 가져오는 것

- Pull: Fetch후 merge하는 과정이다. 보통은 pull을 사용한다.

- push: 로컬에서 작성한 코드를 원격 저장소에 업로드 하는 작업이다. 이 때, 충돌이 발생하면 reject시킨다. 원격저장소에 push할 때에는 reject당하지 않을 책임이 push하는 사람에게 있다.

 

첫 날에서 개인적으로 아쉬웠던 점은 Git과 GitHub에 대한 강의가 하루쯤 더 있어도 될 것 같다는 생각이 들었다. 아직 배우지 못한 내용들이 많았고, 시간관계상 자세한 설명을 생략하는 경우도 있었기 때문이다.

 

[Git에 대한 더 자세한 이야기]

https://six-pillow-4f7.notion.site/2024-02-21-Git-c4cc757dfa664173b345d1ebb7340930?pvs=4

 

2024.02.21(Git) | Notion

Git의 장점

six-pillow-4f7.notion.site

 


 

2.22 - Python 프로그래밍 & 라이브러리(1)

Python의 기초적인 내용을 배워서 자세한 내용은 노션 링크로 대체하겠다.

List, Dictionary, Tuple,  for loop, while loop, bool연산자, if문, 함수에 대해 배웠다.

 

[Python 기초에 대한 이야기]

https://six-pillow-4f7.notion.site/2024-02-22-Python-0b4e362b28384cbe9a6edb6aa72cdd1d?pvs=4

 

2024.02.22(Python 프로그래밍) | Notion

Jupyter notebook

six-pillow-4f7.notion.site

 


 

2.23 - Python 프로그래밍 & 라이브러리(2)

Numpy 기초

용어

  • Axis: 배열의 각 축
    • 2차원 배열에서 axis=0은 행, axis=1은 열을 의미한다.
  • Rank: 축의 개수(차원)
  • Shape: 축의 길이(개수)
import numpy as np # numpy는 보통 np라는 별칭으로 사용한다.

a = np.array([1, 2, 3, 4, 5]) # 1차원 배열을 생성한다.
b = np.array([[1, 2, 3, 4], [5, 6, 7, 8]]) # 2차원 배열을 생성한다.

print(a.ndim) # 1 <- 차원을 볼 수 있다. a는 1차원이므로 1을 출력한다.
print(b.ndim) # 2
print(a.shape) # (5, ) # shape를 볼 수 있다. 1차원이면 (x, )과 같이 표현한다.
print(b.shape) # (2, 4) # 4개짜리 데이터가 2개 있다

print(a.dtype) # int32 <- 배열에 저장된 타입을 볼 수 있다.

조회

슬라이싱과 조회는 파이썬 리스트와 유사하다. 다만 조건조회는 다룰 필요가 있는 것 같다.

# 2차원 배열 만들기
score = np.array([[78, 91, 84, 89, 93, 65],
                 [82, 87, 96, 79, 91, 73]])
                 
print(score >= 90) # False, True, False, ...
print()
print(score[score >= 90]) # 요소 중에서 90이상인 것만 출력!

 

배열연산도 가능하다. 사칙연산처럼 "배열명 + 배열명"과 같이 작성하면 같은 위치의 값끼리 연산한다.

Pandas 기초

데이터프레임과 시리즈

  • 데이터프레임(DataFrame): 관계형 데이터베이스 테이블 또는 엑셀 시트와 같은 형태(2차원 구조)
  • 시리즈(Series): 데이터 프레임에서 하나의 열을 떼어낸 것(1차원 구조)

데이터프레임 정보 확인

  • data.head(): 앞쪽 데이터 확인
  • data.tail(): 뒤쪽 데이터 확인
  • data.shape: 데이터프레임 모양 확인 → (행수, 열수) 형태
  • data.info(): 인덱스, 열, 값 개수, 데이터 형식 정보 등 확인
  • data.describe(): 기초 통계 정보 확인(평균, 표준편차, 최소/최대값 등)
  • data.columns: 열 확인 가능

 

조건으로 조회: .loc[ 행 조건, 열 이름 ]

data.loc[data['DistanceFromHome'] > 3] 
# data데이터프레임에서 DistanceFromHome이 3초과인 데이터의 정보 출력

 

&와 |을 통해 여러 조건 조회도 가능하다. isin()과 between()함수를 통해서도 조회 가능하다(자세한 사용법은 노션 참고).

 

groupby()

- 문법: dataframe.groupby('집계기준변수', as_index=False)['집계대상변수'].집계함수

data.groupby('MaritalStatus', as_index=False)['Age'].mean()
# 결혼 상태별 나이의 평균을 구해라!

data.groupby('MaritalStatus', as_index=False)[['Age, MonthlyIncome']].mean()
# 결혼 상태별 나이와 월급의 평균을 구해라!

 

[Numpy와 Pandas에 대한 더 자세한 이야기]

https://six-pillow-4f7.notion.site/2024-02-23-Numpy-pandas-81fe794349d349f79fafa88552bbb57e?pvs=4

 

2024.02.23(Numpy & pandas) | Notion

데이터 분석/모델링을 위한 데이터 구조

six-pillow-4f7.notion.site

 

comments

비대면 강의라 지루하고 힘들줄 알았는데 아직 첫 주라 그런지 생각보다 괜찮았다. 아직 알고 있는 내용들이 많아 어렵진 않았지만 뒤로갈수록 힘들 것 같은 직감이 확 들었다. 진도 자체가 빠르다고 느꼈기 때문... 복습을 제 때 하지 않으면 따라가기 힘들 수도 있겠다는 생각이 들었다. 그리고 규칙적인 생활을 할 수 있게 되어 좋았다. 아침에 일어나는게 생각보다는 힘들지 않았고 어딘가에 소속되어 있다는 생각이 들어 조금 더 동기 부여가 되는 것 같다.

728x90
반응형