목록전체 글 (30)
아는 만큼 보인다
야심차게 모델링 코드를 짜고 훈련을 시작했다! 그런데 1 epoch을 돌리는데 하루 이상이 걸린다..? 가장 먼저, 원인 파악을 위해 GPU 사용 현황을 모니터링하러 가보자. 각 훈련 환경마다 GPU 모니터링 방법이 다를 수 있다. Ubuntu에서 GPU 모니터링하는 방법은 여기에 잘 소개되어 있다. 나는 회사에서 nvidia-smi로 항상 확인해주고 있다. nvidia-smi 결과를 잘 살펴보는 방법은 여기를 참조하면 된다. 즉, GPU-Util 같은 지표를 통해 GPU의 가용 성능 중 현재 얼마만큼 사용하고 있는지 확인해주면 된다. 100%인데 느리다? 그럼 모델의 문제일 것이고, 이 비율이 50% 정도 미만으로 확연히 낮다? 그럼 모델 외의 문제일 것이다. 1. 모델이 너무 크고 무겁진 않은가? G..
심전도가 심박수 아닌가요? (아닙니다) 본 글에서는 심전도를 이해하기 위한 배경 지식을 소개하려고 합니다. 심장은 어떻게 뛰나요? - 전기 자극으로요! 심장은 심장 혈액을 전신으로 내보내기 위해 수축과 이완 운동을 반복하는데요, 이러한 운동은 심장의 전기적 활동에 의해 유도됩니다. 심장은 스스로 전기 자극을 만들어 내고, 그 전기 자극이 이동하면서 심장 근육을 수축시킵니다. 전기 자극의 이동에 따라 심방과 심실이 적절한 시간과 강도로 수축/이완 활동을 하며 혈액을 전신으로 순환시킵니다. 심전도(electrocardiogram; ECG) 검사를 통해 심장의 전기적 활동을 엿볼 수 있습니다. 피부에 전극을 부착하여 심장에서 만들어내는 이러한 전기 자극의 흐름(전위의 변화)를 감지하는 검사가 바로 심전도 검사..
데이터 전처리를 하다보면, 여러 개의 함수를 연속적으로 사용해야 할 때가 있다. 데이터와 분석 목적에 따라 전처리 과정은 몹시 길 수도 있는데, 이것을 잘 정리해주지 않으면 오류가 발생하기 쉽고 비효율적인 코드가 되거나, 미래의 나와 팀원이 이해하기 어려운 코드가 될 수 있다. 이번 글에서는 method chaining을 통해 좀 더 간결하고 직관적으로 데이터 전처리 코드를 짜는 방법에 대해 알아보고자 한다. 예시와 함께 보도록 하자! 예시는 Iris dataset과 함께 살펴보도록 하겠다. Iris dataset의 table 구조는 다음과 같다. data = pd.read_csv('Iris.csv') data Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWid..
척도는 모델을 평가하기 위해 사용하는 값이다. 척도를 통해 모델의 성능을 비교하여 여러 모델 중 하나를 선택할 수도 있고, 기존 모델의 성능이 낮다면 이를 높이기 위해 다양한 대처를 해볼 수도 있다. 결국 잘 맞추면 되는 것 아닌가? 즉 정확도(accuracy)가 높으면 되는 것 아닌가? 라고 생각할 수도 있지만, 데이터의 특징이나 상황, 목적에 따라 다양한 척도가 사용될 수 있다. 척도에 대한 설명으로 바로 들어가기 전에, 분류 문제에 있어서 다음과 같은 confusion matrix를 그려볼 수 있다. Predicted/classified label 예측된/분류된 라벨 Negative Positive Actual label 실제 라벨 Negative True Negative 980 False Posi..
6월 18일 생애 두번째 코딩테스트를 보았다. 총 4문제가 출제되었으며, 좀 신기했던 것은 알고리즘 위주의 코딩테스트가 아니라 실제 직무와 연관된 코딩테스트가 나왔다는 점이다! 실제로 데이터 전처리와 관련된 문제도 나왔고, 기본적인 머신러닝 관련된 문제도 나왔다. 마지막은 일반적인 알고리즘 문제였던 것 같다. 일단은 데이터 분석에 필요한 지식/구현을 물어보는 문제가 나와서 다행이라고 생각했다. 아직 코딩테스트를 제대로 준비하지 못해서 "괜히 보는 걸까?"라는 후회도 했었는데 안봤으면 후회할 뻔 했다 ㅠㅠ 앞으로의 문제 경향도 파악해볼 수 있었고, 더욱 중요한 건 조금 자신감을 얻었다는 것? 테스트 케이스까지 추가해서 테스트했어도 여전히 틀린 부분이 있을 수 있겠지만, 혼자 테스트해봤을 때는 4문제 다 시..
프로그래머스 신규 아이디 추천 python3 문제 바로가기 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 이번에 기억해야할 것, list로 for loop 돌릴 때, pop()을 사용하는 것은 웬만하면 피하거나 무척 조심하도록 하자..! 특히, 해당 list에서 range(len(list))를 사용해서 인덱스로 루프를 도는데 바로 그 list에서 pop을 써버리면 index error가 발생하기 쉽다.. 그래서 웬만하면 빈 list를 다시 만들고 안에 value들을 다시 추가하는 방식으로 생각해보도록..
프로그래머스 로또의 최고 순위와 최저순의 python3 문제 바로가기 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 이번 문제를 풀면서 다짐한 것 1. 로직 잘 생각하기 2. 침착하게 코딩하기 3. 예상되는 아웃풋의 형태를 미리 짜놓고 거기에 값을 할당하기 --> 이번에 [최고 순위, 최저 순위] 로 결과가 나왔어야 했는데 어이없게도 [최저 순위, 최고 순위]로 코딩해서 처음에 너무 헤맸었다.... 문제를 꼼꼼하게 읽자 또 이번에는 로직을 미리 생각하고 준비하려..
완전 기초 파이썬 expression은 operator와 operands를 포함할 수 있다! operator (연산자)는 +, -, *, /, %, //, ** 등이 있고, operand는 operator가 받게 되는 value들이다. 예를 들어, 2+3 에서 2와 3은 operands, + 는 operator이다. 이 expression을 run하면, 파이썬은 이 expression을 evaluate해서 값을 보여준다. 참고로 // 도 나누기, **는 제곱 연산을 나타낸다. %은 나머지를 보여준다. Types 파이썬의 모든 값들을 특정한 type을 갖고 있다. 예를 들어, int는 정수, float는 실수이다. 두 실수로 이루어진 expression의 결과는 실수이며, 정수와 실수가 포함된 연산의 결과..