일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터분석
- 코딩공부
- 다항회귀
- 코드잇 TIL
- 서브쿼리
- 경사하강법
- 코드잇
- 머신러닝
- 결정트리
- for반복문
- numpy
- CSS
- pandas
- Seaborn
- 코드잇TIL
- 코딩
- 나혼자코딩
- 행렬
- 윈도우함수
- 메소드
- 판다스
- sql연습문제
- 코딩독학
- 파이썬
- matplotlib
- HTML
- 선형회귀
- 로지스틱회귀
- SQL
- 오늘도코드잇
- Today
- Total
목록Coding (179)
Coding Diary.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/kzi5U/btswbBCdUVM/mkUQkDYXjOCEnl1EbAutl0/img.png)
1. 결정 트리 결정 트리는 예/아니오로 답할 수 있는 어떤 질문들이 있고, 그 질문들의 답을 따라가면서 데이터를 분류하는 알고리즘입니다. 교통사고가 났을 때, 운전자의 생존 여부를 예측하고 싶다고 합시다. 결정 트리는 질문들과 답으로 이루어졌습니다. 여기서 가장 위에 '안전벨트를 했나요?' 이 질문에서 안전벨트를 했으면 여기 왼쪽으로 내려와서 생존, 안했으면 오늘쪽으로 내려와서 사망, 이런 식으로 분류하는 것입니다. 질문에 해당하는 내용이 초록색, 그리고 분류에 해당하는 내용을 보라색이라고 합시다. 지금은 안전벨트의 여부를 물었는데 데이터가 주행 속도, 즉 특정 숫자 값이라면 주행 속오가 시속 100km를 넘었나요? 와 같은 질문을 할 수 있습니다. 이때도 똑같이 예측하려는 데이터에 대한 질문의 답에 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bdh203/btsu0rgClGg/o1K6PvafFtmVCIqQXZKFu1/img.png)
1. 하이퍼 파라미터 (Hyperparameter) 많은 머신 러닝 알고리즘은 학습을 하기 전에 미리 정해 주어야 하는 변수 또는 파라미터들이 있습니다. Losso회귀에 대해 생각해봅시다. Lasso는 L1 정규화를 해주는 회귀 모델 입니다. scikit-learn에서 Lasso 모델을 만들 때 alpha와 max_iter 라는 옵셔널 파라미터를 지정해 줬습니다. model = Lasso(alpha=0.001, max_iter=1000) alpha는 손실 함수의 정규화 항에 곱해지는 상수를 뜻하는데 보통은 그리스 문자 람다를 씁니다. 그리고 max_iter 는 경사 하강을 최대한 몇 번 할지를 정하는 값입니다. 이 두값은 모델이 직접 학습해서 배우는게 아니라 모델을 만드는 사람이 정해줘야 합니다. 이처럼..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bbQUuH/btsu2a5XKWC/wYmLPdFJJsQOxT2OuKQdv0/img.png)
1. 플렉스박스 만들기 display: flex; 2. 기본 축과 교차 축 3. 배치 방향 flex-direction 을 사용하면 기본 축의 방향을 정할 수 있습니다. 이때 기본 값은 row 입니다. 4. 기본 축 정렬 : justify-content justify-content를 사용하면 기본 축 방향으로 정렬할 수 있습니다. 기본 값은 flex-start 입니다. 5. 교차 축 정렬 : align-items 교차 축 방향으로 정렬할 때는 align-items를 사용합니다. 기본 값은 stretch(늘려서 배치하기) 입니다. 6. 요소가 넘칠 때 : flex-wrap 요소가 넘치는 경우 flex-wrap: wrap 을 지정해주면 교차 축 방향으로 넘어가서 배치됩니다. 7. 간격 : gap 숫자를 하나 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/thS6O/btsuG9Vw7y1/rItFA7KQfHpOhmovxBDwzK/img.png)
k-겹 교차 검증 (k-fold cross validation)은 머신러닝 모델의 성능을 조금 더 정확하게 평가할 수 있는 방법입니다. 지금까지 머신 러닝 알고리즘을 적용해서 모델을 만들 떄를 생각해봅시다. 가장 먼저 주어진 데이터를 training set과 test set으로 나눴습니다. training set 은 모델이 인풋 변수를 이용해서 아웃풋 변수를 예측할 수 있도록 학습시키는 데 사용했고, test set은 학습시킨 모델이 얼마나 예측을 잘 하는지, 모델의 성능이 얼마나 좋은지를 파악하기 위해서 썼습니다. 이렇게 모델의 성능을 파악하면 문제가 생길 수 있습니다. 이런 식으로 test set 에서만 성능이 좋은 걸 수 도 있고, 반대로 딱 test set 에서만 성능이 안 좋게 나올 수도 있습니..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/1HqwF/btsuQQfx5XP/dMlClCV6Nb9ODlaa7oAXe0/img.png)
저번 글에서 설명하였듯이 복잡한 모델을 그대로 학습시키면 '과적합'이 됩니다. '정규화'라는 기법은 학습 과정에서 모델이 과적합되는 것을 예방해 줍니다. 1. 정규화 위와 같은 학습 데이터를 이용해서 다항 회귀를 하는 경우를 생각해봅시다. 모델이 과적합돼서 아래와 같은 복잡한 다항 함수가 나왔다고 해봅시다. 과적합된 함수는 보통 위아래로 엄청 왔다갔다 하는 특징이 있습니다. 많은 굴곡을 이용해서 함수가 training 데이터를 최대한 많이 통과하도록 하는 것입니다. 함수가 이렇게 급격하게 변화한다는 것은 함수의 계수, 즉 가설함수의 세타 값들이 굉장히 크다는 뜻입니다. 정규화는 모델을 학습시킬 때 세타 값들이 너무 커지는 것을 방지해 줍니다. 세타 값들이 너무 커지는 걸 방지하면 training 데이터에..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/CG4sZ/btst89O7IH5/lJsc5XGDzvcandYE4XGD20/img.png)
1. Position 속성 글의 흐름에서 벗어나서 요소들을 자유롭게 배치할 때 쓰는 속성입니다. position에 따라서 위치를 정하는 기준이 달라집니다. 기본 값은 static이고 static인 경우 원래 있어야 할 위치에 배치됩니다. 2. 위치 정하기 위치를 정하는 기준에 대해서 top, right, bottom, left 속성으로 위치를 정할 수 있습니다. 값이 모두 똑같은 경우 inset 속성을 씁니다. 3. relative 포지션 요소의 원래 위치를 기준으로 배치합니다. 이때 요소의 원래 자리는 그대로 차지하고 있습니다. .green { position: relative; top: 15px; left: 10px; } 4. absolute 포지션 가장 가까운 포지셔닝이 된 조상 요소를 기준으로 배..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/JMqHF/btsudQIic1V/oUlpu4sa8CBcys2vJUZSWk/img.png)
머신 러닝 모델이 정확한 예측을 못하는 경우가 많습니다. 이런 문제를 어떻게 해결하는지 알아보겠습니다. 1. 편향 사람의 키를 이용해서 몸무게를 예측하고 싶다고 해봅시다. 선형 회귀를 사용해서 training 데이터에서 위와 같은 관계라고 해봅시다. 위의 선이 과연 몸무게와 키의 관계를 잘 표현하고 있을까요? 뒤의 데이터를 살펴보면 어느 정도까지는 키가 늘어날 때 몸무게가 같이 늘어나지만, 일정 키 부터는 몸무게가 잘 안 늘어납니다. 따라서 아래와 같은 곡선이 데이터를 더 정확하게 표현합니다. 처음에 본 직선 모델의 문제는 모델이 너무 간단해서 아무리 학습을 해도 위와 같은 곡선 관계를 나타내지 못한다는 것입니다. 모델에 한계가 있는 것입니다. 모델이 너무 간단해서 데이터의 관계를 잘 학습하지 못하는 경..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dCNjtp/btsut2f8PD3/sKbQ8KA7fx8sLiMbA6vRY0/img.png)
머신 러닝에 사용되는 데이터는 크게 두 종류가 있습니다. 수치형 (numerical) 데이터 : 나이, 몸무게, 키 범주형 (categorical) 데이터 : 혈액형, 성별 많은 머신 러닝 알고리즘은 인풋 데이트, 즉 입력 변수의 값이 수치형 데이터여야 합니다. 선형 회귀에서 손실함수를 구하고, 경사 하강법을 적용하려면 인풋 데이터가 수치형 데이터여야 합니다. 그럼 범주형 데이터가 있을 때는 어떻게 해야 하는지 알아봅시다. 범주형 데이터를 수치형 데이터로 바꿔 주면 됩니다. 가장 먼저 떠오르는 방법은 1,2,3, 과 같은 자연수를 각 카테고리에 지정해주는 것입니다. 예를 들어 A형은 1, AB형은 2, B형은 3, O형은 4 이런 방식으로 데이터를 변환하는 것입니다. 이제 혈액형은 숫자 값을 가지게 되니..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cn9OUe/btst54eTOej/mYcdGVrekz1J3yhElJRf50/img.png)
이전 글에서 feature scaling을 하는 이유 중 하나는 경사 하강법을 빨리 할 수 있도록 도와주기 때문이라고 했습니다. 어떤 방법으로 도와주는지 알아봅시다. 1. 선형 회귀, 경사하강법 선형 회귀는 위와 같은 데이터가 있을 때 데이터에 가장 잘 맞는 선 또는 가설 함수 를 찾는 것입니다. 데이터에 가장 잘 맞는다는 것은 데이터에 대한 평균 제곱 오차를 최소화한다는 뜻입니다. 평균 제곱 오차는 아래와 같이 계산합니다. 여기서 m은 데이터 개수, htheta(x^(i))는 i번째 데이터의 목표변수의 예측값, y^(i)는 i번째 데이터의 목표변수의 실제값을 나타냅니다. 그리고 손실 함수라는 것은 아래와 같이 평균 제곱 오차로 정의합니다. 손실 함수는 가설 함수를 평가하기 위한 함수입니다. 손실이 크면..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/thUPu/btst6NqnIy8/mbwgds6XHdqtXIV5hVvSh0/img.png)
머신 러닝에서 많이 쓰이는 데이터 전처리 과정을 살펴보겠습니다. '데이터 전처리'란 주어진 데이터를 그대로 사용하지 않고 조금 가공해서 머신 러닝 모델을 학습시키기 더 좋은 형식으로 만들어 주는 것입니다. 1. Feature Scaling feature scaling은 "feature, 입력 변수의 크기를 scale, 조정해준다" 라는 뜻입니다. 머신 러닝 모델에 사용할 입력 변수들의 크기를 조정해서 일정 범위 내에 덜어지도로 바꿔주는 것입니다. 위의 예시처럼 연봉이라는 입력 변수가 있고 나이라는 입력 변수가 있다고 가정해봅시다. 사람의 연봉은 보통 몇천만원 하지만 사람의 나이는 몇 살 밖에 안됩니다. 이렇게 입력 변수의 규모 단위가 너무 차이가 나면 머신 러닝에 방해가 될 수 있기 때문에 feature..