[KT AIVLE 5기 AI트랙] 1주차 회고

pwrwpw·2024년 2월 25일
2

KT AIVLE

목록 보기
1/21

1월 22일에 KT 에이블 스쿨에서 최종 합격했고, 2월 20일부터 교육이 시작되었습니다. AI와 DX를 합쳐서 약 600명 정도의 인원이었으며, AI 트랙의 동기는 약 300명 정도였던 것 같습니다.

교육 시작 당일인 2월 20일에는 교육은 진행되지 않았지만, 에이블에 대한 설명과 3, 4기 선배님들의 후기, 그리고 질의응답 시간이 있었습니다. 또한, 카이스트 교수님의 강연도 있었는데, 새로운 이야기를 듣게 되어서 즐거운 시간이었습니다

1주차 학습 과정에서 Git과 Python, 그리고 Python 라이브러리인 NumPy와 Pandas 에 대해 배웠습니다. 이전에 Git을 사용해 본 경험은 있었으나, 커밋 간의 'merge'를 실행하는 방식인 '3-way merge' 전략이라 불리는 것을 이번에 처음으로 알게 되었습니다.


📌Git 병합 전략 이해하기 - 이고잉 강사님 !!

Me Base Other 2 way merge 3 way merge
A A ?
B B B B B
1 C 2 ? ?
D ?

🔖2-way merge의 개념과 한계

개념: 동일한 파일의 두 가지 버전(예: Me와 Other)만 비교하여 변화를 결합하는 전략입니다. 이 경우 Base(기준이 되는 상태)는 고려되지 않습니다.

한계: 변화된 사항들의 출처와 각 변경 사항이 어떻게 발생했는지 파악하기 어려워 병합 충돌(conflict) 해결이 더 복잡해질 수 있습니다.

🔖3-way merge의 전략과 장점

전략: 현재 브랜치(Me), 대상 브랜치(Other), 그리고 두 브랜치의 공통 조상(Base)을 비교하여 병합하는 전략입니다. 이 방식은 최신 공통 조상을 참조하여 두 브랜치의 변경을 merge합니다.

장점: 충돌이 났을 때 원인을 더 쉽게 파악할 수 있어, 더 정확하고 효율적인 충돌 해결이 가능합니다. 또한, 기준 트리를 생성하여 충돌을 덜 일으키고 문제를 발견하며 처리할 수 있도록 돕습니다.


🔖Merge 옵션

1. --ff

merge의 default 값이며, 위에 설명한 방식과도 같습니다.
즉 fast forward면 새로운 커밋을 생성하지 않고 fast forward가 아니면 merge 커밋을 생성합니다.

$ git merge -ff master #     -ff 는 생략이 가능함

2. --no-ff

만약 fast forward 일 경우에도 무조건 merge 커밋을 남깁니다.

$ git merge --no-ff master

$ git log --oneline
(커밋해쉬) (HEAD -> master) Merge branch 'master'

3. --squash

스쿼시란 모든 커밋을 하나의 커밋으로 합친 뒤 merge를 진행합니다.
커밋 히스토리를 깔끔하게 관리할 수 있는 장점이 있습니다.

$ git merge --squash master

📌NumPy와 Pandas - 한기영 강사님 !!

먼저 이 수업을 들으면서 드는 생각은 왜 파이썬을 사용해서 데이터 분석에 많이 쓰일까 라는 의문이었습니다.

검색을 해보며 나온 결론은 R과 Python 둘 다 많이 쓰이고 각 계층에 맞는 언어를 선택해서 쓰는 것이 좋지만 아무래도 파이썬이 직관적이고 배우기 쉽다는 장점 때문에 파이썬을 많이 택하고 사용하는 것 같습니다! 참고자료 [1] [2]

❓Python

Python은 인터프리터 언어(소스 코드를 한줄 씩 해석한 후 그때그때 실행해 결과를 바로 확인할 수 있는 언어를 말한다)입니다.

🔖Python의 특징

  1. 파이썬은 사람이 생각하는 방식대로 표현이 가능하다.
    if '맹구' in ['철수','영희','맹구']: print("맹구가 있습니다.")
  2. 문법이 매우 쉽다.
  3. 파이썬은 오픈소스이다.
    -> 따라서 무료이고 개발자가 원하는 대부분의 프로그램을 만들 수 있다

🔖파이썬의 자료형

  1. str : 문자형
  2. 숫자형
    • int: 정수
    • float: 실수
    • complex: 복소수
  3. Boolean: True 또는 False
    • True와 False 또는 == 와 is 또는 != 와 not
    • 이때 True,False,==,!=는 값 자체를 비교하지만
    • is와 is not은 객체(Object)를 비교한다.
  4. List: 리스트
    • 특징 : Mutable하다
    • 리스트는 변수에 값을 저장할때 []로 묶어주면 리스트가 되며 각 값은 콤마로 구분된다.
      ex) test_list = [1,2,3,4,5]
  5. Tuple: 튜플
    • 특징 : Immutable 하다
    • 튜플은 리스트와 다르게 추가(append),삭제(remove),변경(modify)이 불가능 하다. 즉 읽기 전용 리스트라고 할 수 있다.
    • 튜플은 리스트와 다르게 ()로 묶어주면 튜플이 되며 각 값은 콤마로 구분된다.
      ex) test_tuple = (1,2,3,4,5)
  6. dictionary: 딕셔너리
    • 특징: 키가 중복되는 경우, 가장 마지막의 키 값으로 설정됨
    • 또한 key에는 리시트, 딕셔너리를 사용할 수 없지만 값에는 모든 자료형이 가능하다.
    • 딕셔너리는 key:value의 형식으로 저장하며 . 각키와 값의 쌍은 콤마로 구분된다.
      ex) test_dict = { key1 : value1, key2 : value2}
  7. sequence types: 시퀀스 자료형
    • 리스트, 튜플, range, 문자열처럼 값이 연속적으로 이어진 자료형을 시퀀스 자료형이라고 부른다.
    • 시퀀스 자료형의 가장 큰 공통적인 특징은 아래의 동작을 제공한다.
      1. 특정 값이 있는지 확인하기
      값 in(not in) 시퀀스 객체 또는 값
      2. 시퀀스끼리의 합
      seq1 + seq2 = seq3
      3. 시퀀스형의 곱
      seq1 * 3 == seq1 + seq1 + seq1
      4. 슬라이스[시작인덱스:종료인덱스:증가폭]
      seq[0:7],seq[:2]

❓NumPy란?

파이썬의 라이브러리로써 고성능의 수치계산을 위해 제작됨
또한 C 기반으로 구현되어 있어 연산 속도가 빠름

🔖NumPy의 특징

  1. 넘파이의 배열은 모든 원소가 같은 자료형이어야 한다.
    -> 넘파이는 데이터 타입을 일관되게 유지함으로써 메모리를 효율적으로 사용함
  2. 1차원 배열을 Vecter 2차원부터는 행렬이라고 한다
  3. 선형대수(행렬을 이용한 연산)를 이용한 연산이 가능하다

❓Pandas란?

데이터 분석(Data Analysis)를 위해 널리 사용되는 파이썬 라이브러리

🔖Pandas의 특징

  1. 데이터 분석과 표 형태의 데이터를 다루는데 특화됨
  2. 데이터 셋을 이용한 다양한 통계 처리 기능 제공
  3. Series와 Data Frame과 같은 자체적인 데이터 구조를 사용
  4. 위와 같은 데이터 구조를 이용해 데이터 관리가 유용함

🔖Series와 Data Frame

Series(1차원) : 같은 유형의 배열로 표시된 1차원 데이터
DataFrame(2차원) : 유형이 지정되어있으며, 크기가 가변적인 테이블 형식의 2차원 데이터 -> 행렬

두개의 큰 차이는 Series는 컬럼이 한 개, DataFrame은 컬럼이 여러 개인 데이터 구조체라는 점이다.

또한, 판다스의 모든 데이터 구조는 값을 변경할 수 있지만 불변성을 선호한다.


함수의 종류들과 그거에 관한 내용은 위와 같이 노션으로 관리할 것 같습니다! 이미 익숙한 기능도 많지만 처음 보는 것들이 많아서 데이터를 이리저리 다뤄보면서 친해져야겠다는 생각이 들었습니다.

또한 이외에도 알고리즘 스터디와 CS면접 스터디를 시작하게 되었습니다.

이렇게 제대로 스터디를 해보는 경험은 처음이라 기대가 되면서도 걱정이 되지만 노력해서 무언가를 얻어 가는 시간이 되었으면 좋겠습니다.

KT 에이블 함께하는 분들 모두 파이팅 해요!

틀린 부분은 언제나 댓글로 지적 부탁드립니다!

0개의 댓글