본문 바로가기

분류 전체보기95

머신러닝이란 머신러닝을 개념을 최대한 쉽게 정리해봤다. 일단 머신러닝… 기계를 가르친다는 뜻인데, 기계를 어떻게 가르칠 것인가에 따라 두 가지로 나눠서 생각할 수 있다. Supervised Learning (지도 학습) Unsupervised Learning (비지도 학습) 차이점을 간략하게 알아보자. Supervised Learning (지도 학습) 지도 학습은 데이터에 레이블(정답)이 미리 정해져 있을 때 가능하다. 그래서 프로그램에 입력값을 주면 출력값을 기계가 예측해주는 거다. 예를 들면 음악이라는 걸 들어본 적 없는 아이에게 이런저런 음악을 들려주면서 “이건 락이야, 이건 EDM이야, 이건 재즈야.” 이런 식으로 가르쳐주면 나중에는 그 아이가 아무 음악이나 들려줘도 “이건 재즈다!”하고 맞추는 것과 같다. .. 2021. 8. 6.
의사결정 나무(Decision Tree) 쉽게 이해하기 의사결정 나무(Decision Tree)는 각 데이터들이 가진 속성들로부터 패턴을 찾아내서 분류 과제를 수행할 수 있도록 하는 지도학습 머신러닝 모델이다. 일단 이 모델의 개념만 최대한 쉽게 설명해본다. 목차는 아래와 같다. 의사결정 나무란 무엇인가 지니 불순도 (Gini Impurity) 정보 획득량 (Information Gain) scikit-learn 사용법 재귀적(Recursive) 트리 빌딩 의사결정 나무의 한계 요약 내용이 많지 않으니 후딱 살펴보자. 의사결정 나무란 무엇인가 예를 들면 이런 거다. 시험에서 A를 받은 데이터를 초록색 동그라미로 표현했다고 하자. 의사결정 나무는 대체 어떤 사람들이 그 A를 받았는지 나름의 기준이나 체크리스트(?) 같은 걸 만들어준다. 그래서 새로운 데이터가 .. 2021. 8. 6.
머신러닝 개괄(오버피팅과 언더피팅, 모델링, 신호와 잡음) 1. 오버피팅과 언더피팅 오버피팅과 언더피팅은 데이터 모델링을 공부할 때 알아야 하는 중요한 개념 중 하나입니다. 하지만 여러 커뮤니티 등을 보면 이걸 다소 피상적이거나 편향적으로만 이해하는 경우를 종종 봅니다. 제 생각에 이것은 기존의 많은 자료들이 오버피팅과 언더피팅을 제한적인 관점에서만 설명하기 때문이 아닌가 싶습니다. 오버피팅과 언더피팅을 설명하는 자료들은 대개 아래와 같은 그림을 제시하며 설명합니다. 노파심에 강조하자면 이것이 틀린 그림이나 설명은 아닙니다. 다만 이런 그림은 오버피팅과 언더피팅을 단지 모델의 복잡함 측면으로만 생각하게 만드는 문제가 있다고 생각합니다. 그래서 오버피팅과 언더피팅을 절충 (trade-off) 관계라고만 생각하는 것이죠. 이를 테면 이런 식의 설명에 익숙해지면 모델.. 2021. 8. 6.
머신러닝 오버피팅의 개념과 해결 방법 머신러닝은 (쉽게 얘기하자면) 대량의 데이터를 알고리즘에 넣어서 일종의 규칙을 생성하고, 그 규칙에 따라 입력값을 분류하도록 하는 거다. 그래서 이 알고리즘에 제공하는 학습 데이터가 매우 중요하다. 학습 데이터의 모든 값들을 하나하나 살펴보면서 규칙을 생성하기 때문이다. Overfitting(과적합)이란 overfitting은 모델의 파라미터들을 학습 데이터에 너무 가깝게 맞췄을 때 발생하는 현상이다. 무슨 뜻인고 하니… 학습 데이터가 실제 세계에서 나타나는 방식과 완전히 똑같을 거라고 가정해버리는 거다. 그래서 학습 데이터 세트에 속한 각각의 개별 데이터들을 완벽하게 설명하기 위한 모델을 생성한다. 일단 말로만 들었을 땐 좋을 수도 있는데 정말 현실이 그러할까? 아래 그림을 보자. 각 점들은 학습 데이.. 2021. 8. 6.
로지스틱 회귀분석(Logistic Regression, lr) 로지스틱 회귀분석은 Logistic regression analysis로 표기하면 로짓분석(Logit analysis)라고도 한다. Cox(1970)가 처음 제시한 개념으로 두개의 값만을 가지는 종속변수와 독립변수들 간의 인과관계를 로지스틱 함수를 이용하여 추정하는 통계기법이다. 로지스틱 회귀분석은 어떤 사건(event)이 발생할지에 대한 직접 예측이 아니라 그 사건이 발생할 확률을 예측하는 것이다. ​ 로지스틱 회귀분석이 사용되는 예를 보면, 금융권에서는 고객의 신용도 평가를 통해 이 고객의 신용도가 우량이 될 것인지, 신용불량자가 될 것인지 미리 예측해 볼 수 있다. 또한 통신사의 경우 2년 약정 종료 후 번호이동으로 타 통신사로 갈 것인지, 기기변경으로 남을 것인지 판단할 수 있다. 제과점에서는 전.. 2021. 8. 6.
데이터 시각화 형태 고르기 수 많은 데이터 시각화 유형 중 가장 적합한 형태의 선택은 항상 고민 되는 이슈이다. 데이터 시각화 이론에서 가장 많이 활용되고 있는 표는 앤드류 아벨라(Andrew V. Abela)의 챠트 선택 방법이 있다. 무엇을 보여주고 싶은지 목적에 따라 비교(Comparion), 분포(Distribution), 구성(Comparison), 관계(Relationship)의 카테고리로 챠트를 구분하고 있다. 그림 출처(https://medium.com/@DataPlay/selecting-the-right-chart-for-your-data-501af25dc693) 그림 출처 (https://www.i-boss.co.kr/ab-74668-1747) 이 밖에 The Data Visualisation Catalogue .. 2021. 7. 26.
SQLD, SQLP 시험 일정과 검정수수료 및 간단한 개요 시험명 접수기간 수험표발급 시험일 결과발표 증빙서류 제출기간 SQLD (D, developer: 개발자) 제40회 SQL 전문가/개발자 2.22 ~ 2.26 3.5 3.20(토) 4.16 4.16 ~ 4.23 제41회 SQL 전문가/개발자 5.3 ~ 5.7 5.14 5.29(토) 6.25 6.25 ~ 7.2 제42회 SQL 전문가/개발자 8.9 ~ 8.13 8.20 9.5(일) 10.1 10.1 ~ 10.8 제43회 SQL 전문가/개발자 10.25 ~ 10.29 11.5 11.20(토) 12.17 12.17 ~ 12.24 검정 수수료 SQL 전문가(SQLP) 100,000원 SQL 개발자(SQLD) 50,000원 SQL 국가 공인 자격증에는 SQLP 와 SQLD가 있다. 난이도는 SQLP 가 SQLD보다.. 2021. 7. 26.
Jupyter 주요 단축키 모음 (1) 셀 선택 모드 (Command Mode) [esc] 또는 [ctrl] + [m]를 눌러 셀이 아래와 같이 파란색이 된 상태(셀 선택 모드)에서 해당 단축키 누른다. 위로 셀 추가 [a] 아래로 셀 추가 [b] 선택 셀 삭제 [d][d] (d를 두번 누름) 선택 셀 잘라내기 (삭제로 써도 무방) [x] 선택 셀 복사하기 [c] 선택 셀 아래에 붙여넣기 [p] 선택 셀과 아래 셀과 합치기 [shift] + [m] 실행결과 열기/닫기 [o] Markdown으로 변경 [m] Code로 변경 [y] 파일 저장 [ctrl] + [s] 또는 [s] 선택 셀의 코드 입력 모드로 돌아가기 [enter] -- (2) 코드 입력 모드 (Edit Mode) [enter]를 눌러 셀이 아래와 같이 초록색이 된 상태(코드.. 2021. 7. 26.
[SQL] INNER 조인과 OUTER조인이 무엇인가요?출처: https://stanleykou.tistory.com/entry/SQL-INNER-조인과-OUTER조인이-무엇인가요 [StanleyKou의 개인작업실] http://stackoverflow.com/questions/38549/difference-between-inner-and-outer-joins/38578#38578 Q: INNER JOIN OUTER JOIN의 차이가 무엇인가요? 그리고 LEFT JOIN, RIGHT JOIN, FULL JOIN은 또 무엇인가요? (질문자: cdv) A: 중복이 없는 서로 다른 두 컬럼을 JOIN한다고 가정할 때, 일반적으로는: - inner join 을 A 와 B에 대해 수행하는 것은, A와 B의 교집합을 말합니다. 벤다이어그램으로 그렸을 때 교차되는 부분입니다. - outer join을 A와 B에 대해 수행하는 것은, A와 B의 합집합을 말합니다. 벤다이어 그램으로 그렸을 때, 합집합 부분입니다. 예제: 두 개의 .. 2021. 7. 26.
정보처리기사 공부 덕에 바쁘다. 학원 수업과 병행하려니 시간이 남아나질 않는다. 하지만 배경 지식을 쌓는 데에 아주 좋은 공부인 것 같다. 전공자들이 배우는 기초적인 지식을 기사 자격증 하나에 담다니. 굉장히 효율적인 것 같다. 개나소나 따는 자격증이란 인식이 강해서 경시했지만, 내용은 생각보다 훨씬 알차다. 내가 학원 진도를 나가는데 왜 남보다 힘들었는지 알 수 있다. 학점은행제에서 괜히 30학점이나 인정해 주는 게 아니었다. 2021. 7. 26.
파이썬] 숫자 천 단위 콤마(,) 넣기 1. 간단한 방법 number = 12342133242145 number = format(number, ',') number >>> '12,342,133,242,145' 2. 이번에는 다른 방법. 숫자는 직접 입력하는 식으로. num = input('아무 숫자를 입력하세요: ') if num.isdigit(): num = num[::-1] ret = '' for i, c in enumerate(num): i += 1 if i != len(num) and i%3 == 0: ret += (c + ',') else: ret += c ret = ret[::-1] print(ret) else: print('입력한 내용 [%s]: 숫자가 아닙니다.' %num) 2021. 7. 17.
[파이썬] 파이썬 에러 ValueError: invalid literal for int() with base10: '4.3' 오늘은 파이썬 형변환에서 발생하는 오류인 ValueError: invalid literal for int() with base 10: '4.3' 에 대하여 알아보겠습니다. 파이썬에서는 형변환이 간단합니다. 문자형으로 바꿀 때는 str() 정수형으로 바꿀 때는 int() 실수형으로 바꿀 때는 float() 를 각각 사용합니다. 문자열을 정수로 변환 1 2 3 >>> a = '10' >>> int(a) 10 문자열을 실수로 변환 1 2 3 >>> b = '4.3' >>> float(b) 4.3 정수를 문자열로 변환 1 2 3 >>> c = 7 >>> str(c) '7' 실수를 문자열로 변환 1 2 3 >>> d = 2.71 >>> str(d) '2.71' 문제 상황 ValueError: invalid lit.. 2021. 7. 17.
BeautifulSoup 모듈, find와 select의 차이점 BeautifulSoup은 HTML 문서를 예쁘게 정돈된 파스트리로 변환하여 내놓는 파이썬 라이브러리다. 이 잘 정돈된 데이터 구조는 Beautiful Soup 객체로서 여러 tag 객체로 이루어져 있다. 영어, 한국어와 같은 자연어 문장이 문법에 따라 구조를 갖듯이 HTML 이라는 웹을 이루는 언어로 작성된 페이지를 문법에 맞게 구조화한다. find 와 select 는 BeautifulSoup의 메소드로서 데이터 구조를 항해하는 몇 가지 방법이다. 01. find 사용법 find의 목적은 원하는 태그를 찾는 것이다. 태그는 이름(name), 속성(attribute), 속성값(value)로 구성된다. 따라서 find로 이름, 속성, 속성값을 특정하여 태그를 찾을 수 있다. tag = " Hello Wor.. 2021. 7. 16.
Selenium WebDriver 소개 Selenium WebDriver에 대해 설명 드리고, Ranorex와 같이 활용하여 Web Application을 강력하게 테스팅하는 방법을 소개 드리고자 합니다. ​ Selenium WebDriver는 무엇인가? ​ Selenium WebDriver는 웹 어플리케이션을 테스팅할 때 사용하실 수 있는 무료 도구이며, API를 제공하는 오픈소스 프레임워크입니다. 이상적으로는 웹 브라우저들은 같은 방법으로 웹 어플리케이션을 출력하게 되어있습니다. 그러나 각각의 브라우저들은 고유의 렌더링 엔진이 있고 HTML을 약간씩 다르게 다룹니다. 그것은 웹 어플리케이션을 동시에 여러 장비와 브라우저에서 동작하는지 테스트해야 하는 이유입니다. Selenium API를 사용한 자동화된 테스트들은 WebDriver가 있는 .. 2021. 7. 16.
BeautifulSoup 간단한 소개 BeautifulSoup은 HTML이나 XML에서 데이터를 추출하는 파이썬 라이브러리 이다. 웹문서의 구조를 찾아내는 파서를 이용해 찾고자 하는 데이터의 위치를 찾아 내어 값을 추출한다. 또한, 잘못된 HTML을 수정하여 반환해주거나 Javascript의 DOM처럼 기능하도록 해준다. ##설치 방법 !pip intall beautifulsoup4 ​ ## BeautifulSoup 객체 생성 ## requests.text를 이용해서 받아온 문자열 데이터를 DOM 형식으로 바꿔준다. ​ # html.parser vs lxml - lxml 모듈을 설치해야 lxml모듈을 사용 가능하다. - lxml 모듈이 html.parser보다 더 성능이 우수하다. ​ ## Tag 객체 - 반환 데이터의 타입은 Tag타입과 .. 2021. 7. 16.