[혼자 공부하는 머신러닝+딥러닝] 4-1. 로지스틱 회귀
·
ML & DL/머신러닝 기초
Intro.한빛 마켓의 새로운 이벤트인 '한빛 럭키백' 출시!그런데 고객들이 판단을 하려면 럭키백에 포함된 생선의 확률을 알려줘야겠네...그냥 분류만 하는 건 앞에서 해봤는데, 그 분류에 대한 확률도 구할 수 있는 걸까?= 럭키백에 들어가는 생선은 7종.럭키백에 들어간 생선의 크기, 무게, 길이 등이 주어졌을 때, 7개 생선에 대한 확률을 출력해야 함!1. k-최근접 이웃 분류k-최근접 이웃 모델은 가까운 이웃 중 가장 많은 것을 타깃으로 채택했었다. 그렇다면, 그 '가까운 이웃'들의 비율이 있을 것이다. → 실제로 이 분류기에서 확률 계산 기능을 제공함!데이터 준비이번에도 인터넷에서 데이터 내려받기 by Pandas`.unique()` : 중복되는 거 빼고 고유한 값들 보여주는 함수이 생선의 종류들을 ..
[혼자 공부하는 머신러닝+딥러닝] 3-3. 특성 공학과 규제
·
ML & DL/머신러닝 기초
Intro.(이전 시간에) 다항회귀 모델로 예측해봐도 여전히 남아있는 과소적합이 찜찜한데... 도와주세요ㅠ김 팀장🗣️ "뭐야, 높이랑 두께 데이터도 있으면서 왜 안 썼어? 선형회귀는 특성이 많을수록 효과가 뛰어나니까, 여러 개의 특성을 함께 적용해 봐!"1. 다중 회귀데이터 준비이번엔 길이 말고 높이랑 두께까지, 특성(독립변수)을 3개로 추가함.인터넷에서 데이터를 편하게 내려받아 쓸 수 있는 pandas 라이브러리 활용!입력 데이터`pd.read_csv()` : 외부의 csv 파일을 데이터프레임으로 받아오는 함수`.to_numpy()` : 넘파이 배열로 바꿔주는 메소드 타깃 데이터훈련/테스트 세트 분할 특성 공학(feature engineering)`PolynomialFeatures()` : 다항 특성..
[혼자 공부하는 머신러닝+딥러닝] 3-2. 선형 회귀
·
ML & DL/머신러닝 기초
Intro.농어 담당 직원이 50cm 짜리 농어를 가져와 무게를 예측해달라고 하시네.저번 시간에 만든 k-최근접 이웃 회귀 모델을 실전에 쓸 때가 왔군 ㅎㅎ"1.03kg 정도로 예측됩니다! ... 네...? 실제 무게는 1.5kg이라구요...?" ㅠㅠ1. k-최근접 이웃의 한계데이터 준비 & 모델 훈련이전 시간에 만든 그 Knn 회귀모델 다시 준비 (k=3으로 설정)문제 상황 파악50cm 농어를 넣어보니 정말 1.03kg로 예측하네 .. (≠ 정답인 1.5kg)산점도로 그려보니 문제가 보임..!예측하려는 농어(녹색 세모)가 훈련시킨 데이터들이랑 동떨어져 있음새로운 샘플이 훈련세트 범위를 벗어나면 예측을 제대로 할 수 없구나!(예컨대 막 100cm를 넣어봐도 그대로 1.03kg으로 예측함 ^^;;)"다른 ..
[Pytorch+딥러닝] 1. Pytorch 기초
·
ML & DL/딥러닝 기초
1. 텐서(Tensor)란?1.1. 벡터, 행렬, 텐서딥러닝에서 다루는 가장 기본적인 단위 : 벡터, 행렬, 텐서스칼라(scalar) : 단일한 값 1개 벡터(vector) : 1차원으로 구성된 값의 배열행렬(matrix) : 2차원으로 구성된 값의 배열텐서(tensor) : 3차원 이상의 배열4차원 이상은 머리로 생각하기 어렵지만, 아래 그림처럼 그려볼 수는 있음4d-tensor : 3d-tensor를 위로 쌓아 올린 모습5d-tensor : 4d-tensor를 다시 옆으로 확장한 모습6d-tensor : 5d-tensor를 다시 뒤로 확장한 모습 1.2. 텐서의 크기딥러닝에서 행렬/텐서의 크기를 고려하는 것은 항상 중요함 ⇒ 2/3차원 텐서의 예시로 살펴보자기본적인 2차원 텐서전형적인 2차원 텐서의 ..
[혼자 공부하는 머신러닝+딥러닝] 3-1. k-최근접 이웃 회귀
·
ML & DL/머신러닝 기초
Intro.김 팀장🗣️ "농어의 무게 데이터가 56개 빼고 다 날아갔어... 길이 데이터는 있는데, 혹시 이것만 보고 농어의 무게를 예측하는 모델을 만들어 줄 수 있을까? 무게가 측정되어있는 샘플 56개를 메일로 보내줄게."1. 데이터 준비농어 데이터 (길이, 무게)이번엔 파이썬 리스트 → 넘파이 변환하지 말고, 처음부터 넘파이로 가져옴.산점도로 그려보기훈련세트와 테스트세트 분할전에 배운 `train_test_split()` 함수로 간편하게 분할그리고 사이킷런 입맛에 맞도록 2차원 배열로 크기 변경 by `.reshape()` 함수2. 회귀 모델 만들기알고리즘 준비`KNeighborsRegressor()` : 사이킷런 패키지의 'k-최근접 이웃 회귀 알고리즘'으로, 이웃 수치들의 평균으로 타깃값을 판단..
[혼자 공부하는 머신러닝+딥러닝] 2-2. 데이터 전처리
·
ML & DL/머신러닝 기초
Intro.김 팀장🗣️ "문제가 생겼어. 길이 25cm, 무게 150g이면 분명 도미일 텐데 자네 모델은 빙어라고 예측한다는군?"ㅇ ~ㅇ....1. 사이킷런으로 모델 만들기전에 만든 모델 그대로 써도 되지만, 좀 더 세련된 방법으로 다시 만들어보자!입력 데이터 준비 by NUMPY`.column_stack(())` : 전달받은 리스트를 세로로 세워서 이어 붙이는 함수 (튜플로 감싸서 전달해야 함!)타깃 데이터 준비 by NUMPY`np.ones()` : 원하는 크기의 배열에 1을 채워서 만들어주는 함수`np.zeros()` : 원하는 크기의 배열에 0을 채워서 만들어주는 함수`.concatenate(())` : 첫 번째 차원에 따라 배열을 연결하는 함수 (튜플로 감싸서 전달해야 함!) 훈련/테스트 세트..
[Keras] Sequential API vs. Functional API 비교
·
ML & DL/딥러닝 기초
Keras에서 모델을 정의하는 방법은 크게 두 가지가 있습니다. 둘의 차이를 비교/정리하고, 의문이 생겼던 점들을 정리해둡니다.([혼자 공부하는 머신러닝+딥러닝] 복습 중에 헷갈려서 따로 찾아본 내용을 정리해둡니다.)1. Sequential API (순차적 모델)1) 특징Layer들을 순차적으로 쌓는 방식 (=일직선 구조)단순한 모델 (입력 → 은닉층 → 출력) 설계에 적합2) 예시 코드Sequential API를 사용하여 간단한 CNN을 구현하는 코드 예시from tensorflow import kerasmodel = keras.Sequential([ # Sequential 객체 선언해두고 keras.layers.Conv2D(32, kernel_size=3, activation='relu', pa..
[혼자 공부하는 머신러닝+딥러닝] 2-1. 훈련 세트와 테스트 세트
·
ML & DL/머신러닝 기초
Intro.김 팀장🗣️"근데, 네가 훈련할 때 쓴 데이터로 평가를 하면 당연히 정확도가 100% 나오는 거 아냐...?"ㅇ ㅁㅇ ....1. 모델 개선 (1차)데이터 준비 및 알고리즘 객체 생성여기까진 이전 강의와 동일 (데이터 생성, KNN분류기 생성)훈련세트와 테스트세트 분할김 팀장 말을 듣고, 테스트 세트 떼어내야겠다고 판단 ⇒ 슬라이싱 사용함.그런데 ...훈련하고 평가해보니, 정확도가 0이 되어버림 ㅠㅠ2. 다시 문제 발생문제의 원인 (샘플링 편향)다시 살펴보니, 애초에 데이터 합칠 때 순서대로 이어붙였음 = 그걸 그대로 35번째에서 자르면, 훈련은 도미로만 하고 평가는 빙어로 하게 됨테스트세트 떼어내기 전에 샘플들을 골고루 섞었어야지! ⇒ 이런 문제를 "샘플링 편향"이라고 함!문제의 해결책골고..
[혼자 공부하는 머신러닝+딥러닝] 1-3. 마켓과 머신러닝
·
ML & DL/머신러닝 기초
Intro.김 팀장🗣️ "직원이 물고기 종류 구분을 못 하네... '무게'와 '길이' 데이터를 바탕으로, 도미와 빙어를 구분하는 모델을 만들어줘!"1. 데이터 준비직접 리스트로 입력한 데이터도미 데이터길이 특성, 무게 특성 2가지 있음빙어 데이터길이 특성, 무게 특성 2가지 있음사이킷런에 맞게 데이터 구성 다듬기사이킷런이 기대하는 데이터 형태 = 리스트 속 리스트 (2차원 리스트)도미 데이터와 빙어 데이터를 합치고, 2차원 리스트로 만들어줌`zip()` : 전달받은 리스트에서 원소를 하나씩 꺼내주는 함수 정답 데이터 설정입력 데이터는 위에서 설정한 도미와 빙어.뭐가 정답인지는 알아야 알고리즘도 '학습'이란 걸 할 수 있겠죠! (정답=`1`) 2. 머신러닝 프로그램 개발알고리즘 준비`KNeighborsC..