일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- 윈도우함수
- numpy
- 코딩
- 오늘도코드잇
- 로지스틱회귀
- 파이썬
- 코딩공부
- pandas
- 선형회귀
- 코드잇
- matplotlib
- 서브쿼리
- HTML
- SQL
- 코드잇TIL
- 데이터분석
- CSS
- sql연습문제
- 머신러닝
- for반복문
- 행렬
- 메소드
- 나혼자코딩
- 코딩독학
- 결정트리
- 다항회귀
- 경사하강법
- 판다스
- Seaborn
- 코드잇 TIL
- Today
- Total
목록Coding (179)
Coding Diary.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/d9iyKs/btsHi4TXsDt/HBIzM9xw3K8WVmPtfxsyPK/img.png)
1) NULLNULL은 0과 다릅니다, 데이터가 존재하지 않는 셀입니다.WHERE 절에서 NULL을 식별할 때 IS NULL 또는 IS NOT NULL 을 씁니다. (NULL은 SQL에서 값으로 간주되지 않기 때문에 =를 사용하지 않습니다)NULL은 LEFT 또는 RIGHT JOIN을 수행할 때 자주 발생합니다. LEFT JOIN의 왼쪽 테이블에 있는 일부 행이 오른쪽 테이블의 행과 일치하지 않으면 해당 행은 결과에 일부 NULL값을 포함합니다.NULL은 단순히 데이터베이스의 데이터가 누락된 경우에도 발생합니다.SELECT *FROM accountsWHERE primary_poc IS NOT NULL; 2) COUNTCOUNT는 NULL 값이 있는 행을 고려하지 않습니다.누락된 데이터가 있는 행을 빠르게..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bIk8tM/btsHghHdXey/Bput8sokF8ejygp03plC30/img.png)
1) JOIN : 한 번에 둘 이상의 테이블에서 데이터를 가져올 수 있도록 함JOIN 문을 추가하면 ON 문도 추가됨SELECT orders.*, accounts.* #테이블 이름은 항상 마침표 앞/ 열은 항상 마침표 뒤FROM ordersJOIN accountsON orders.account_id = accounts_id;SELECT orders.standard_qty, orders.gloss_qty, orders.poster_qty, accounts.website, accounts.primary_pocFROM ordersJOIN accountsON orders.account_id = accounts.id;SELECT *FROM web_eventsJOIN accountsON web_events.acco..
1) SELECT & FROMSELECT : 데이터를 받을 열FROM : 열을 선택하려는 테이블 지정테이블의 모든 열에 있는 데이터를 제공받으려면 * 사용SELECT *FROM orders2) LIMITLIMIT : 테이블의 처음 몇 행만 보고 싶을 때 유용전체 데이터 불러오는 것 보다 속도 훨씬 빠름항상 쿼리의 맨 마지막 부분SELECT *FROM ordersLIMIT 10; (처음 10개의 행만 표시) 3) ORDER BY모든 열의 데이터를 사용하여 결과를 정렬SELECT, FROM 뒤 LIMIT 앞기본값은 오름차순/ ORDER BY 뒤에 DESC 추가 시 내림차순 정렬SELECT *FROM ordersORDER BY occurred_atLIMIT 1000;한 번에 두 개 이상의 열을 정렬 가능/ 맨..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bXBaWk/btsyEDcjDVm/2SWKSnLMv8xX74rCkLBx21/img.png)
선형 회귀를 사용해서 내용 기반 추천을 해 봅시다. 가장 먼저 선형 회귀에서는 데이터를 수학적으로 어떻게 표현하는지 봅시다. 먼저 아래 데이터를 실제로 사용할 떄는 영화 이름이나 속성 이름을 쓰지 않았는데, 구별을 하기 위해 몇 번째 데이터와 속성인지를 자연수로 표시해보겠습니다. 가장 기본적으로 입력 변수들, 위의 경우 영화 속성들은 x라는 문자로 나타내고, 목표 변수, 즉 유저 평점은 y라는 문자로 나타냅니다. 1. 입력 변수 각 영화에서 속성은 액션, 로맨스, 코미디, 감동 총 4개 입니다. 첫 번째 입력 변수인 액션 정도를 나타내기 위해 x_1, 로맨스 정도를 나타내기 위해 x_2, 나머지도 마찬가지로 x_3, x_4로 나타냅니다. 입력 변수의 개수는 n이라는 문자로 표현하는데 지금은 총 4개의 입..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/rT3lP/btsydrDvEpr/4IfK4IWLvwyhAQ5o0CCnDk/img.png)
1. 데이터 셋 저번 글에서 사용한 데이터에다가 중요도라는 열을 추가하겠습니다. 에다 부스트는 전에 있는 스텀프들이 틀리게 예측한 데이터들을 조금 더 잘 맞추려고 하는 알고리즘입니다. 그렇기 때문에 스텀프를 만들 때 전에 예측에 실패했던 데이터들을 조금 더 중요하게 취급을 해야 합니다. 이걸 수치화하고 보기 편하게 열로 추가시켜주는 것입니다. 처음에는 틀리게 예측한 데이터가 없으니까 모든 데이터의 중요도를 같게 설정합니다. 7개의 데이터가 있으니까 각각 1/7씩 입니다. 중요도의 합은 항상 1로 유지시켜 줍니다. 2. 첫 스텀프 만들기 첫 스텀프는 전에 만든 스텀프가 없기 때문에 결정 트리를 만들 때랑 똑같이 root 노드를 고릅니다. 일단 각 질문들의 지니 불순도를 계산합니다. 지니 불순도가 가장 낮은..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/uK6qt/btsx3FV89B1/DKdAOushOhbJ1koWqISrvk/img.png)
1. 스텀프 랜덤 포레스트를 만들 때와 똑같이 에다 부스트에서도 수많은 결정 트리들을 만듭니다. 랜덤 포레스트에서 만드는 트리들은 깊이가 조금 있었는데 에다부스트에서는 깊은 결정 트리들이 아니라 root 노드 하나와 분류 노드 두 개를 갖는 얕은 결정 트리를 만듭니다. 예를 들면 교통사고 데이터를 분류하고 싶다고 합시다. 뿌리 노드의 질문이 속도가 80km를 넘었는지 안 넘었는지, 그리고 넘었으면 사망, 넘지 않았으면 생존 이렇게 예측하는 단순한 트리인 입니다. 이런식으로 하나의 ㅈ리문과 그 질문에 대한 답으로 바로 예측을 하는 결정 트리를 나무의 그루터기를 의미하는 스텀프라고 합니다. 이런 식으로 스텀프를 만들게 되면 성능은 주로 50%보다 조금 나은 성능을 갖게 됩니다. Boosting 기법은 성능이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/tXsMb/btsxzYB8jOx/zDhM72QK3t9ZDw2c9EMYrk/img.png)
랜덤 포레스트는 수많은 트리들을 임의로 만들고, 이 모델들의 결과를 다수결 투표로 종합해서 예측하는 모델입니다. 트리를 많이, 임의로 만들기 때문에 랜덤 포레스트라는 이름을 갖습니다. 랜덤 포레스트에서 임의성을 더하는 요소는 두가지가 있습니다. 그 중 Bootstrapping에 대해 알아보겠습니다. 1. Bootstrapping bootstrapping은 갖고 있는 데이터 셋을 이용해서 조금 다른 데이터 셋을 만들어내는 방법입니다. 예를 들어 독감 환자 데이터를 사용한다고 해봅시다. 총 다섯 개의 열이 있는데 고열, 기침, 몸살, 콧물, 그리고 환자가 독감인지 아닌지에 대한 데이터가 있습니다. 이 데이터 셋을 이용해서 좀 다른 데이터 셋을 만들어야 합니다. 방법은 간단합니다. 그냥 원래 있던 데이터 셋에..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/GJVQ7/btsxg0aJ09b/PstGCefXzye5egwHMdUcmk/img.png)
결정 트리는 수많은 머신 러닝 알고리즘들 중 가장 직관적인 것들 중 하나입니다. 결정 트리의 장점은 쉽게 해석할 수 있다는 것입니다. 머신 러닝 모델을 해석한다는 건, 예측을 하는 데 있어서 어떤 속성들이 좀 더 중요하게 사용됐고, 어떤 것들이 좀 덜 중요하게 사용됐는지 알아낸다는 것입니다. 예를 들어서 독감 데이터에서 열, 기침, 몸살 이 속성들 중 어떤 것이 독감을 예측하는 데 가장 영향력이 크고, 어떤 것이 덜 중요하게 사용됐는지 알수 있다는 것입니다. 만들어 놓은 트리를 이용해서 각 속성들의 중요도, feature importance를 계산하는 방법에 대해서 알아보겠습니다. 1. 노드 중요도 (Node Importance) 속성들의 중요도를 계산하기 위해서는 먼저 각 노드 하나하나의 중요도, no..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bEbFUl/btswkmeMRpM/Q6ttjm0KvAT7OhM1MKrh7K/img.png)
1. 그리드 나누기display 속성을 grid로 하고 grid-template-columns 속성으로 열을, grid-template-rows 속성으로 행을 나눌 수 있습니다. 예를 들어거 3x2 그리드를 만드는데, 열 너비는 각각 100px, 200px, 100px이고 행 너비는 150px, 200px이라면 아래와 같이 쓸 수 있습니다.display: grid;grid-template-columns: 100px 200px 100px;grid-template-rows: 150px 200px; 2. 유연한 크기 단위fr 이라는 단위를 사용하면 플렉스박스처럼 전체 크기에 대해 상대적인 값을 지정할 수 있습니다. 예를 들어서 3x2 그리드에서 열의 너비를 1:1:1로 하고 싶다면 아래와 같이 하면 됩니다.d..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/brKKe6/btsw2ImD2WE/TDt1TrhTVQcaIFcbg56xj0/img.png)
1. 지니 불순도 머신 러닝 프로그램이 결정 트리를 만들 때는 과제처럼 내용이 정해져 있는 내용으로 만드는 게 아니라 경험을 통해 직접 정해나가야 합니다. 데이터를 분류해 보면서, 각 위치에서 어떤 노드가 제일 좋을지 고르는 것입니다. 선형 회귀 알고리즘의 목적이 학습 데이터를 가장 잘 나타낼 수 있는 일차식을 찾는 거였습니다. 결정 트리의 목적은 학습 데이터를 직접 분류해보면서, 데이터들을 가장 잘 분류할 수 있는 노드들을 찾아내는 것입니다. 이걸 하려면 어떻게 분류하거나 질문을 하는게 좋고 안좋은지에 대한 기분, 즉 손실함수 같은 개념이 필요합니다. 결정 트리에서는 이것을 지니 불순도(gini impurity)를 통해서 합니다. 아래의 예시와 같이 독감 데이터를 추상화해보겠습니다. 파란색은 독감인 데..