-
Pandas pd.read_csv의 engine과 encoding
데이터 분석가 사전 테스트를 보면 csv파일을 읽어서 데이터 분석을 진행하는 경우가 있습니다. 이럴 때 한글이 깨져서 보이면 당황스럽죠,, mac에서 jupyter notebook으로 pandas.read_csv()로 파일을 읽어올 때 다음과 같이 하시면 됩니다! 간단하게 해결하세요! 입력 예시 df = pd.read_csv('test.csv', engine="python", encoding='cp949')
-
포스코 청년 AI·BigData아카데미 15기 과정 시작
최종합격 지난 7/1일 떨리는 면접을 마치고, 7/6일에 최종 합격 메일을 받았습니다! 🤩 이후 사전 교육에 대한 시험을 치르고 기대했던 통계 수업을 들었습니다. 지원 동기 🌟포스코 청년 AI·BigData아카데미에서 빅데이터 분석 직무 유사 경험&AI를 사용한 심화 프로젝트 경험을 쌓을 수 있기 때문에! 저는 이공계에서도 비즈니스와는 가장 멀리 있는 천문학을 전공하고 심지어 석사까지 마쳤기 때문에, 첫 면접에서 “왜 전공을 그만두고 바꾸려고 하는가?” 라는 질문을 가장 먼저 받았습니다. 이러한 질문에 대한 대답의 근거를 만들기 위해 비즈니스 데이터 분석 경험이 필요하다고 느꼈습니다. 또한 빅...
-
선형대수 기초 개념 정리
이 글은 포스코 AI・BigData 아카데미 교육과정에서 추천하는 선형대수 온라인 강의를 요약한 것입니다. 향후 내용이 추가될 예정입니다. [2. 일차종속 및 독립] 일차 결합 벡터와 상수의 곱의 결합 예시) $a1v1+a2v2+…$ 생성 일차 결합 계산 결과를 말한다. 일차종속 및 독립 일차(선형)독립? 한 백터에 실수배 해서 다른 벡터를 하나라도 만들어 낼 수 없다. 일차(선형)종속? 한 백터에 실수배 해서 다른 벡터를 하나라도 만들어 낼 수 있다. 예시) (1,1)과 (2,2) 독립 VS. 종속 판별 방법 정방행렬인 경우> 행렬식으로 판별 행렬식이 0이...
-
Summary for BFS Algorithm
🌟코딩테스트에서 BFS 문제를 풀기 위해 꼭 필요한 함수 총 정리!!!!!🌟 코테 전에 BFS 알고리즘 필수 요약 보고 들어가세요! 계속 업데이트 합니다. Queue 만드는 방법 queue에 2D node를 추가할 때 시공간 복잡도가 가장 낮은 방법. (현재까지 진행한 여러가지 테스트롤 통해 내린 결론이며, 향후 변경될 수 있다.) from collections import deque q = deque() q.append((sy, sx)) (y, x) = q.popleft() q.append((ny, nx)) Graph...
-
NAVER AI Now
기존 AI 시대 각 문제별로 데이터 확보->정제->모델개발->서비스 문제: 긴시간과 많은 리소스 필요, 결과물을 다른데 사용하는데 제한 한계: 한정적 자원에 의한 속도와 스케일 한계->새로운 패러다임의 필요성 해결: Big model의 일반화와 확장을 통한 플랫폼화 BIG AI 시대 정의 새로운 AI 시대: 파라메터 수 높이는 것 파라메터 수가 많아짐에 따라 해결 가능한 문제 수가 많아진다. 더 큰 모델, 더 빠른 학습이 경쟁 주제이다. 필요한 것 슈퍼컴퓨팅 인프라: 필수, NAVER는 700pf이상 ...
-
모델 성능 평가 지표
‘현재 딥러닝을 하고 있다면 축하한다. 딥러닝을 시작하려고 마음을 먹었다면 축하한다. 만약, 세상을 바꾸고 싶다면, 여기가 바로 그런 곳이다’. -Andrew Ng- Confusion matrix 정답 True를 True로 예측: True Positive(TP) False를 False로 예측: True Negative(TN) 오답 True를 False로 예측: False Negative(FN) False를 True로 예측: False Positive(FP) Precision 정밀도 = 모델이 T...
-
Few-shot Learning 딥러닝 시 데이터 수가 매우 적을 때?
Reference 이 글은 카카오브레인 AutoLearn 연구팀의 퓨샷 러닝 연구를 참고 요약한 것입니다. 논문 https://arxiv.org/pdf/1905.01436.pdf @ CVPR 2019 EGNN Edge-Labeling Graph Neural Network for Few-shot Learning 필요성 딥러닝 시 데이터 수가 매우 적을 때 {러시안블루, 페르시안, 먼치킨}처럼 고양이의 종류를 구분하는 태스크를 풀 때 같은 범주의 데이터를 더 가깝게, 다른 범주의 데이터를 더 멀게 할 정도로 충분히 복잡하지 않을 때 방법...
-
DFS (Depth-First Search) 알고리즘
DFS (Depth-First-Search)은 깊이 우선 탐색 알고리즘의 줄임말입니다. 필요성 한 node에서 목표 node로 도착할 수 있는 경로(short-path)를 찾을 때 예) 미로찾기, 재귀, 백트레킹 구현 구현 방법은 두 가지만 기억하면 됩니다. 문제를 그래프로 구현한다. 인접 리스트(adjacency list)을 사용해서 이웃 node와의 관계를 기록한다. 장점: 인접 행렬(모든 노드의 관계 저장)보다 효율적인 메모리 사용 (연결된 노드만들 저장하기 때문) 단점: 두 노드가 연결되어있는지 확인하는 속도 느...
-
Mutable & Immutable
python 함수 밖에 있는 데이터를 함수 안에 가져와서 연산하고 변화된 데이터를 return해야할 때가 있죠! python 기초 공부를 마치신 분들은 integer를 함수 안으로 가져오는 방법에 대해서 익숙하실겁니다. 저도 integer에 대해서 공부했기때문에, list를 가져오는 방법도 동일할 것이라고 생각했습니다. 📌 그렇지만 list는 integer와 달리 불러오지 않아도 함수 안에서 바로 사용할 수 있습니다‼️ 이유가 뭘까요? mutable과 immutable 필요성 python은 객체 지향이므로 객체 생성 후 변경 여부 관리가 중요 예를 들어 객체를 함수의 p...
-
BAEKJOON 백준 시작 방법 초보자 길라잡이
프로그래머스만 사용하다가 백준을 시작하면 테스트 값 입력 방식이 달라서 당황스러울 수 있습니다. 백준은 프로그래머스와 다르게 입력 값을 직접 받아서 처리해줘야하기 때문입니다. 백준 ABCDE 문제 13023번을 예로 들며 백준 문제 풀기 방법에 대해 익혔습니다. 입력 예시 프로그래머스에서는 함수를 만들고 제출하면 함수에 입력 값이 자동으로 입력되었었죠? 하지만 백준에서는 답안을 제출할 때 입력을 받아서 처리한뒤 사용하는 코드를 추가해줘야합니다. 예를 들어, 백준에서는 아래와 같이 배열도 리스트도 아닌 숫자 모음이 입력 예시로 주어집니다. 5 4 0 1 1 2 2 3 3 4 입력 값 받아오기 백준에...
-
python list 연산의 시간복잡도
요즘은 코딩테스트 준비를 위해 솔루션을 여러가지로 작성해보며 계산 시간과 메모리 효율성에 대해서 테스트 해보고 있습니다. 백준을 돌아다니던 와중에 자주 틀리는 요인에 대한 글을 읽으면서, list 자료형 사용시 조심해야겠다고 생각한 부분들이 나와서 반가웠습니다. 또한 제 고민이 헛되지 않았고, 제가 list 자료형에 대해 이해한 내용이 맞다는걸 알게되어서 좋았습니다. 단순히 코딩테스트만을 위한 것이 아니라 비전공자 입장에서 코드 작성시 고려해야하는 점들에 대해서 배우는게 많았습니다. 시간 복잡도가 O(n)인 list 연산들 python list의 시간복잡도에 대해 정리된 링크를 보고 내용을 정리했습니다. ...
-
Programmers 네트워크 문제
프로그래머스 깊이/너비 우선 탐색(DFS/BFS) 카테고리의 네트워크 문제의 솔루션 3 가지를 비교하고 시간 단축 방법을 정리했습니다. BFS 알고리즘을 공부했기에 문제에 적용해보려 시도했지만 쉽지 않았습니다. 그래서 이번 문제를 풀 때 필요했던 생각의 방향을 줄글로 기록합니다. 아이디어 첫 번째 노드 (임의의 노드) 시작해서 연결된 모든 노드를 방문하며 연결된 모든 노드를 탐색한다. 그리고 visited에 기록한다. 이러한 방법을 사용하면 두 번째 노드에서 탐색을 시작할 때, 두 번째 노드와 연결이 되어있지만 이미 방문했던 (= 첫 번째 노드와 연결되어 있는) 노드는 탐색할 필요가 없게 된다. 따...
-
Programmers 주식가격 문제
프로그래머스 스택/큐 카테고리의 주식가격 문제의 솔루션 두 가지 방법을 비교해봤습니다. For loop 사용 선택한 답 ⭕️ def solution1(prices): answer = [len(prices)-1-i for i in range(len(prices))] for i in range(len(prices)): for j in range(i+1,len(prices)): if prices[j]<prices[i]: answer[i]= j-i break return answer 성능 정확...
-
Queue 구현? list.pop(0) vs. deque.popleft()
BFS 알고리즘을 작성할 때 queue(큐)를 구현하기 위해서 list 자료형을 즐겨 사용하셨나요? 하지만 큐에서 데이터를 제거할 때 queue.pop(0)을 사용하면 코딩테스트에서 효율성 점수😅가 낮게 나올 수 있어요! (아래 예시에서 확인할 수 있습니다.) 효율성을 높이기 위해 큐를 구현하는 다른 방법을 공부하고 두 방법의 효율성을 비교했습니다. Queue를 만드는 방법들 List 사용 queue = [] node = queue.pop(0) # 가장 왼쪽 node 제거 queue.append(new_node) # 가장 오른쪽에 node 추가 단점: 삽입&삭제 효율성 낮다. ...
-
Greedy
알고리즘 공부가 처음이고, 구현 연습을 하고 싶다면? Greedy algorithm (탐욕 알고리즘)으로 시작해보세요! 필요성 모든 경우를 고려해야해서 시간이 오래걸리는 문제를 만났을 때 정답에 가까운 꽤 괜찮은 답을 구하고 싶을 때 최대한 많은, 큰 … 정답을 구하고 싶을 때 정의 Greedy algorithm (탐욕 알고리즘)은 approximation algorithm(근사 알고리즘)입니다. 성능 두 가지 지표로 판단합니다. 얼마나 빠른가? 최적해에 얼마나 가까운가?
-
BFS (Breadth-First Search) 알고리즘
BFS (Breadth-First-Search)은 너비 우선 탐색 알고리즘의 줄임말입니다. Graph(그래프)의 너비를 우선으로 탐색한다는게 무슨 말일까요? 필요성 한 node에서 다른 node로 가는 최단 경로(short-path)를 찾을 때 예) 가장 적은 수로 승리하는 게임 방법 계산, 가장 적은 개수의 글자를 고치는 맞춤법 검사기, 가장 가까운 병원 찾기 한 node에서 다른 node로 가는 경로가 존재하는지 알고 싶을 때 정의 BFS (너비 우선 탐색) 알고리즘은 graph(그래프)를 사용해서 최단 경로 문제(short-path problem)를 푸는 방법으로, 답을 찾을 때까지 그...
-
Summary for Sort Algorithm
🌟코딩테스트에서 정렬 문제를 풀기 위해 꼭 필요한 함수 총 정리!!!!!🌟 코테 전에 정렬 알고리즘 필수 요약 보고 들어가세요! 계속 업데이트 합니다. 정렬 방법 List 정렬 list 원본을 변경하거나 정렬한 list를 return하는 두 가지 방법이 있으며 두 방법 모두 key와 reverse 모두 사용 가능하다. 정렬의 default는 오름차순이다. List 원본 변경 예시) 첫 번째 key(x1)를 기준 오름차순 정렬한 뒤, 두 번째 key(-x[0])를 기준으로 내림차순 정렬 list.sort(key=lambda x: (x1, -x[0]), reverse...
-
Sort
필요성 저는 숫자를 다루는 일을 했다보니 다른 알고리즘보다 정렬 함수에 상대적으로 익숙한 편이었습니다. 그렇지만 결과가 나오는 방법을 기억하고 사용만해왔고, 어떻게 데이터를 정렬해주는지는 이해한 적은 한 번도 없었습니다. 책을 읽다보니 정렬 알고리즘에도 다양한 종류가 있고 알고리즘마다 시간 복잡도와 사용 상황이 다르더라구요. 효율적인 알고리즘 작성을 위해서 다양한 정렬 알고리즘을 이해하고, 주어진 데이터 상황에 알맞은 알고리즘을 사용하도록 해봅시다! Quick Sort 퀵 정렬은 하나의 파일을 기준값(Pivot, 피봇)보다 작은 원소들과 큰 원소들로 분할하고, 기준값 왼쪽에 는 작은 원소들을 오른쪽에는 큰...
-
Recursion
구글링을 통해 이해했다고 생각했는데 막상 코딩테스트에 가면 구현이 어려우셨나요? 저뿐만 아니라 많은 초보자분들이 재귀 방법에서 손에 잡힐 듯 잡히지 않는 느낌을 받는다고 합니다. 그래서 저는 오늘 재귀를 확실히 이해해보려고 합니다. 필요성 반복문을 쓸까 재귀 함수를 쓸까? 재귀를 쓴다고 항상 성능이 좋아지는건 아닙니다. 오히려 재귀 함수 호출이 반복될 때마다 스택에 정보를 저장하게 되므로 많은 메모리를 사용하게 됩니다. 스택이 너무 커질 경우에는 반복문을 사용하는 것이 더 좋습니다. 하지만 중요한 알고리즘들 (예>퀵 정렬 )에 재귀가 사용되므로 확실한 개념 이해가 필요합니다. 예를 들어 생각하는대로...
-
Data Structure Stack
제 인생 첫 코딩 테스트를 보기 3일전에 Stack이란 단어를 처음 봤습니다. 구글링 덕분에 코딩 테스트 전에 개념을 파악할 수 있었지만 알고리즘 구현은 생소하고, queue(큐)와 헷갈립니다. 정의 Stack은 list의 한쪽 끝으로만 데이터의 삽입&삭제가 가능한 data structure(자료 구조)입니다. Stack은 data structure 중 선형 구조(linear Structure)에 속하며, 포스트 잇을 한 장씩 쌓아올리는 것처럼 데이터를 쌓습니다. 따라서 데이터를 삭제할 때, 나중에 들어온 데이터를 먼저 삭제하는 방식(Last In First Out)으로 데이터를 처리합니다. 즉 스택은...
-
Data Analyst? Data Engineer? Data Scientist?
데이터를 분석하는 일을 하고 싶은데 관련 직무가 정말 많죠. 나만의 커리어를 쌓아가기 위해서 직무별 특징을 이해하고 필요 역량을 살펴볼게요. 각종 채용 공고를 보고 각 직무별 요구하는 job skills를 정리해봤습니다. Data Analyst 정의 Data-driven 의사결정을 내릴 수 있도록 정량적 수치와 분석 결과를 제공하는 사람 하는 일 서비스에서 발생하는 Raw Data들을 정제/가공/적재하며, 회사 구성원에게 Insight가 전달될 수 있도록 대시보드 및 리포트를 구성 Skill 필수 역량 모바일 서비스 데이터 분석 방법(LTV, AARRR, Cohort, Funnel 등)에 대한 이해 ...
-
Data Structure Array vs. Linked List
List->Array->List->Array…… 에러가 날때마다 영문도 모른체 데이터의 자료형을 변환하는데 급급했나요? 두 자료구조의 차이점을 몰라서 에러가 날때마다 적당히 자료형을 바꾸며 돌려막기한다면, 계산 시간과 한숨을 엄청나게 낭비하게 됩니다. 이제 이 답답함에서 벗어나보자구요! # What I did before list = [] array = np.array(list) listagain = list(array) 시작은 리스트였으나, np.where을 사용해서 원하는 값의 index를 찾으려다가, error 때문에 list->array로 바꾸어 사용하다가, array에 값을 추...
-
Big O Notation
Basic 카테고리에서는 효율적인 코드 작성을 위해서 필요한 기본 개념과 알고리즘들을 하나씩 익혀나 가겠습니다! 서론 저는 대학원을 입학하며 처음 코딩을 시작했습니다. 그 때가 2018년도 3월이니 벌써 3년전이네요. 학부에서 배운 내용이 아닌 새로운 세부 전공에 도전하다보니 수업이나 논문에 나오는 단어의 개념도 모를때였죠. 설상가상으로 첫 학기에 저를 마중나온 수업은 최신 통계 방법들을 코드로 작성해서 데이터에 적용하는 수업이었습니다. 즉, 저는 Python, 코딩, 통계, 머신러닝과 연구분야에 대한 개념까지 모두 없는 말그대로 zero base 학생이었습니다. 다른 연구자들보다 능력이 부족한 상태로 시작...