분류 전체보기

    모델 평가(Evaluation)

    모델 평가(Evaluation)

    지난 시간에 Sklearn 라이브러리를 활용하여 데이터를 전처리하는 방법을 알아보았습니다. Sklearn 라이브러리들이 모델을 생성하고 학습하는 것을 굉장히 편리하게 해주어 누구나 쉽게 모델을 만들 수 있습니다. 그렇다면 우리가 만든 모델이 과연 어느정도의 성능을 보이는지 평가를 해야할 것입니다. 이번 글에서는 모델을 평가하는 지표들인 Confusion Matrix에 대하여 알아보도록 하겠습니다. Confusion Matrix? Confusion Matrix는 모델이 2가지 경우에 대하여 예측한 결과를 의미합니다. 즉 양성인지 음성인지를 판단한 결과를 보여줍니다. 코로나 때문에 PCR검사를 받은 경험이 있나요? PCR검사를 받으면 당일 저녁 혹은 다음날 아침에 결과 문자를 받게 됩니다. 이 때 Posit..

    Sklearn 라이브러리를 활용하여 데이터 전처리하기

    Sklearn 라이브러리를 활용하여 데이터 전처리하기

    2주간 파이썬의 Sklearn 라이브러리를 공부하였습니다. 굉장히 편리하게 데이터를 전 처리하고 모델링할 수 있는 다양한 기능들을 배울 수 있었습니다. 이번 글에는 Sklearn 라이브러리를 활용하여 데이터를 전처리하는 방법들을 익히고, 실습으로 타이타닉의 생존자를 예측하는 문제의 데이터를 전처리해보겠습니다. 문제 소개 : Titanic - Machine Learning from Disaster Titanic - Machine Learning from Disaster | Kaggle www.kaggle.com *Titanic 문제는 Kaggle의 Hello World라고 불릴 정도로 많은 사람들이 처음 Kaggle에서 머신러닝 문제를 풀 때 시작하는 문제입니다. 1912년에 타이타닉호가 빙산에 부딪히며 ..

    파이썬으로 머신러닝 시작하기

    파이썬으로 머신러닝 시작하기

    머신러닝이란? 알파고의 등장 제가 머신러닝에 관심을 갖기 시작한 계기는 알파고의 등장이었습니다. 당시 저는 컴퓨터공학과 1학년 학생이었습니다. 언론에서는 알파고와 이세돌 9단의 대국으로 뜨겁게 달구어지고 있었습니다. 알파고의 등장으로 한국에도 머신러닝 열풍이 불기 시작하며 저도 자연스럽게 머신러닝에 관심을 가지게 되었습니다. 머신러닝이란? 머신러닝은 기계가 직접 학습을 하여 결정을 내릴 수 있도록 모델링하는 방법입니다. 예를들어 이미지를 제공하면 그 이미지가 어떤 동물인지를 컴퓨터가 직접 결정하도록 만드는 것을 의미합니다. 0과 1만을 인식하는 컴퓨터가 스스로 인지하고 판단하도록 만들기 위해서 과거에는 if-then을 활용하여 구현하였습니다. 대전 알고리즘을 가이드 해주는 인공지능은 과거에도 굉장히 쉽..

    [선형대수] 행렬 방정식

    [선형대수] 행렬 방정식

    행렬이란? 행렬은 행과 열을 가지고 있는 것을 의미합니다. 지난시간에 알아본 벡터를 활용하여 행렬을 표현할 수도 있습니다. $\mathbb{R}^n$의 차원을 가지는 벡터 $\vec{a_1},\vec{a_2},\vec{a_3} \cdots\vec{a_n}$가 있다고 할 때 벡터를 각 열로 판단한다면 아래와 같이 표현될 수 있습니다. $$ \mathcal{A}x =\begin{bmatrix} \vec{a_1} & \vec{a_2} & \vec{a_3} \ \dots \ \vec{a_n} \end{bmatrix} \begin{bmatrix} x_1 \\ \vdots \\ x_n \end{bmatrix} = x_1\vec{a_1} + x_2\vec{a_2} + x_3\vec{a_3} \cdots x_n\vec..

    [선형대수] Vector와 linear combination

    [선형대수] Vector와 linear combination

    Vector와 Scalar Vector와 Scalar를 아마 물리시간에 처음 접했던 것 같습니다. 벡터는 방향과 크기를 가지는 값이고 스칼라는 크기만 가지는 값이라고 배웠습니다. 이번시간에는 벡터를 활용한 선형대수에 대하여 배워보기 위해 벡터를 조금 깊게 이해하고 linear combination을 알아보도록 하겠습니다. Vector는 $\vec{a}$로 위에 화살표를 작성하여 표시합니다. 선형대수에서는 볼드체로 문자를 작성하여 $a$와 같이 표현하기도 합니다. $\mathbb{R^2}$ 차원의 벡터라는 의미는 실수 2차원의 벡터를 의미합니다. 그 벡터는 아래와 같이 표현할 수 있습니다. $$ \vec{a} = \begin{bmatrix}x_1 \\ x_2 \end{bmatrix} $$ 이 벡터 값의 의..

    [선형대수] Row Reduction과 Echelon Forms

    [선형대수] Row Reduction과 Echelon Forms

    nonzero와 leading entry Echelon form은 linear system을 편리하게 해결하는 Row Reduction 알고리즘을 수행하기 위해 알아야하는 구조입니다. Echelon form을 알기 위해서는 nonzero와 leading entry에 대하여 알아야합니다. nonzero는 말 그대로 0이 아닌 것을 의미합니다. 즉 nonzero row는 0으로만 이루어지지 않은 행을 의미합니다. 즉 행의 원소중 하나이상은 0이 아닌 값을 지니고 있어야합니다. nonzero column은 열의 원소중 하나 이상은 0이 아닌 값을 지니고 있는 것을 의미합니다. leading entry는 nonzero row에서 0이 아닌 수 중에서 가장 왼쪽에 있는 값을 의미합니다. $$ \begin{bmat..

    [선형대수] System of Linear Equations이란?

    [선형대수] System of Linear Equations이란?

    Linear Equation? Linear Equation은 선형 방정식을 말합니다. 이렇게 $a_1x_1+a_2x_2 +\cdots+a_nx_n = b$ 일차식으로 나타나는 값을 의미합니다. $x$가 1차가 아닌 다른 차수를 갖는다면 선형방정식이라고 할 수 없습니다. 이 때 앞에 표시되는 계수 $a_1, a_2, \cdots a_n$은 실수혹은 허수가 올 수 있습니다. 그리고 이러한 계수들을 coefficient라고 부릅니다. System of linear Equations? System of linear Equation(줄여서 linear system이라고도 합니다.)은 선형방정식들의 해를 구하기 위해 하나 이상의 선형방정식들을 모아놓은 것을 의미합니다. $$ x_1 - 2x_2 = 7 $$ $$ x..

    파이썬스러운 코드 개발(PEP-8)

    파이썬스러운 코드 개발(PEP-8)

    클린 코드의 중요성 우리가 코드를 개발하는 이유는 무엇일까? 학교에서 코드를 작성하는 목적은 컴퓨터에 명령을 하기 위해서라고 배웠었다. 하지만 나는 최근 개발공부를 하며 컴퓨터에게 더욱 잘 명령을 내리기 위한 공부를 한다기보다는 다른 개발자분들이 나의 코드를 잘 이해할 수 있도록 짜기위해 노력한다. 나는 다른 개발자분들이 잘 이해할 수 있는 코드를 클린코드라고 생각한다. 클린한 코드를 개발하면 다른 개발자분이 나의 코드를 유지보수하는데 코드를 이해하는 시간을 줄일 수 있어 기술부채를 최소화할 수 있다. PEP-8이란? Java도 변수명, 클래스명에 대한 명명규칙과 같은 표준 코딩스타일이 있다. 그와 같이 파이썬도 PEP-8이라는 표준 코딩스타일을 가지고 있다. 이는 이미 파이썬 구문의 많은 특수성을 고려..

    글또 7기를 시작하며

    글또 7기를 시작하며

    글또 7기를 시작하며 처음 글을 쓰기 시작한 것은 4년전 인턴생활을 할 때 였다. 인턴생활을 기록하기 위해 블로그를 개설하고 블로그 글을 쓰기 시작하였다. 인턴생활이 종료되니 자연스럽게 블로그에 포스팅을 멈추며 글을 쓰는 습관은 자연스럽게 내 몸속에서 잊혀져갔다. 최근 개발자로 취업준비를 진행하며 글을 작성하는 것이 학업에 많은 도움을 준다고 느꼈고 다른 사람들이 나의 글을 읽고 도움을 줄 수 있다는 뿌듯함을 느끼며 다시 글을 쓰기 시작하였다. 하지만 최근 상반기 취업준비를 하다보니 블로그에 글을 쓰는것에 소홀해졌다. 상반기도 끝나가는 시즌에 주기적으로 블로그 글을 작성하는 습관을 들이기 위하여 글또에 지원하게 되었다. 의무적으로 글도 쓸 수 있고 실력있는 개발자분들이 넘쳐나셔서 유익한 글들을 읽을 수 ..

    [PGM] 구명보트 (java)

    [PGM] 구명보트 (java)

    문제링크 https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 문제풀이 👨🏻‍💻 핵심 스킬 👨🏻‍💻 Greedy 1. 문제 이해 구명보트를 활용하여 무인도에 갖힌 사람들을 구출할 때 구명보트를 최소한으로 사용한다면 몇개의 구명보트면 구할 수 있을지를 구하는 문제이다. 이 때 구명보트에는 최대 2명의 사람과 제한무게 이하로 탑승할 수 있다. 2. 접근방법 Greedy한 접근을 하면 문제를 ..

    [PGM] 주식 가격 (Java)

    [PGM] 주식 가격 (Java)

    문제링크 https://programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 문제풀이 👨🏻‍💻 핵심 스킬 👨🏻‍💻 우선순위 큐 1. 문제 이해 초 단위로 기록되어있는 주식의 가격에 대한 정보가 들어있는 int형 배열이 input으로 들어올 때 그 가격이 떨어지지 않은 기간이 몇 초인지 return 하는 문제이다. 2. 접근방법 우선순위 큐를 활용하여 문제를 해결할 수 있다. 우선 순위 큐..

    [PGM_12981]  영어 끝말잇기 (Java)

    [PGM_12981] 영어 끝말잇기 (Java)

    문제링크 https://programmers.co.kr/learn/courses/30/lessons/12981 코딩테스트 연습 - 영어 끝말잇기 3 ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"] [3,3] 5 ["hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang", "gather", "refer", "reference", "estimate", "executive"] [0,0] programmers.co.kr 문제풀이 👨🏻‍💻 핵심 스킬 👨🏻‍💻 Set 1. 문제 이해 n명의 사람이 ..

    [PGM_77885] 2개 이하로 다른 비트 (Java)

    [PGM_77885] 2개 이하로 다른 비트 (Java)

    문제링크 https://programmers.co.kr/learn/courses/30/lessons/77885?language=java 코딩테스트 연습 - 2개 이하로 다른 비트 programmers.co.kr 문제풀이 👨🏻‍💻 핵심 스킬 👨🏻‍💻 비트연산자 1. 문제 이해 $f(x)$ = $x$ 보다는 크지만 비트 2개만 변경된 값 중 최소값으로 정의되는 함수 $f$가 있을 때, $f(x)$의 값을 구해주는 문제이다. 2. 접근방법 bit연산자인 &연산자를 사용하여 문제를 해결할 수 있다. &연산자는 and연산으로 a & b에서 불 대수 a,b가 모두 1인 경우만 1이다. 비트 두개만 변경하여 최소가 되기 위해서는 가장 작은 위치의 0값을 찾아 1로 바꾸어주고 가장 작은 위치 바로 아래의 1을 0으로 ..

    [PGM_42883] 큰 수 만들기 (Java)

    [PGM_42883] 큰 수 만들기 (Java)

    문제링크 https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 문제풀이 👨🏻‍💻 핵심 스킬 👨🏻‍💻 탐욕 알고리즘 1. 문제 이해 숫자 number와 지워지는 문자의 개수 k가 주어질 때 가장 큰 값으로 지워지게 만들어주는 경우를 구해주는 문제이다. number k return "1924" 2 "94" "1231234" 3 "3234" "4177252841" 4 "775841" 위 예시를 보면 알 수 있듯이 1924에서 2개의 수를 지웠을 때 가장 큰 값은 94이고, 1231234에서 3개의 수를 지웠을 때 가장 큰 수는 3234임을 알 수 있다. 2. 접근방법 문제는 굉장히 이해하기 쉽지만..

    [PGM_42583] 다리를 지나가는 트럭

    [PGM_42583] 다리를 지나가는 트럭

    문제링크 https://programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr 문제풀이 👨🏻‍💻 핵심 스킬 👨🏻‍💻 큐 1. 문제 이해 모든 트럭이 다리를 지나가는데 걸리는 시간을 구하는 문제이다. 이 때 트럭이 지나가는 다리의 길이와 가능한 무게가 주어진다. 트럭 한대가 지나가는데 걸리는 시간은 다리의 길이이다. 그리고 트럭이 올라갈 수 있는 한계는 다리의 길이만큼과 다리가 버틸 수 있는 무게의 이하일..

    Java의 BigInteger를 알아보자.

    Java의 BigInteger를 알아보자.

    22.03.12 SK ICT 코테를 보고 충격에 빠졌다.. 4문제 중 2솔.. 2번과 4번만 맞추고 떨어진것 같다.. 솔직히 3번은 쉽게 풀수 있겠다고 생각하고 도전했던 DP문제인데, 값이 너무 커질수 밖에 없다고 생각해서 long을 써서 해결하려고 하였는데 결국 실패했다. 근데 1번은 왜 나중에 풀려고 아껴둔거지?(아직도 자신에게 의문) 코테가 끝나고, Java의 자료형에 대한 공부를 하다가 BigInteger를 알게 되었다..(좀 더 빨리 알았으면 3번을 금방 풀었을텐데..) BigInteger Class의 범위는? Big Integer의 클래스의 범위는 무한대다. 예전에 자료구조 수업을 처음 들을 때 첫 과제가 BigInt라는 자료형을 만들어보는 문제였는데, 그게 사실 Java에서 지원해주는 api..

    [PGM_17679] 프렌즈 4블록

    [PGM_17679] 프렌즈 4블록

    문제링크 https://programmers.co.kr/learn/courses/30/lessons/17679 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr 문제풀이 👨🏻‍💻 핵심 스킬 👨🏻‍💻 구현 1. 문제 이해 프렌즈 4블록 게임은 2x2로 이루어진 블록이 제거되는 게임이다. 위 그림을 보면 라이언과 콘이 2x2로 겹쳐있는 것을 볼 수 있다. 이 경우 해당하는 블록을 제거해주며 된다. 이 때 라이언처럼 겹치게 2x2를 만족하면 겹치는 부분을 포함하여 제거해줄 수 있다는 것을 주의..

    [PGM_12978] 배달  (java)

    [PGM_12978] 배달 (java)

    문제링크 https://programmers.co.kr/learn/courses/30/lessons/12978 코딩테스트 연습 - 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 programmers.co.kr 문제풀이 👨🏻‍💻 핵심 스킬 👨🏻‍💻 구현 1. 문제 이해 주어지는 파라미터로 정수인 N과 K 그리고 int형 이차원 배열 road가 주어진다. N은 마을의 개수 K는 특정 임계값 그리고 road는 마을과 마을 사이의 길에 대한 정보가 들어있는 배열이다. road의 첫번째 값은 첫번째 마을, 두번째 값은 두번째 마을 마지막으로 ..