2021. 6. 17. 20:47ㆍICT 멘토링/혼자 공부하는 머신러닝+딥러닝
6강 - 회귀 문제를 이해하고 k-최근접 이웃 알고리즘으로 풀어 보기

지난 시간에...

농어의 무게를 예측하라
이진 분류 타깃 0,1
회귀(regression) 타깃 임의의 숫자
회귀
골턴 - 19세기 통계학자
k-최근접 이웃 회귀(knn)
회귀와 분류의 차이


농어의 길이만 사용
import matplotlib.pyplot as plt
plt.scatter(perch_length, perch_weight) //weight 타깃
plt.xlabel('length')
plt.ylabel('weight')
plt.show()

훈련 세트 준비
from sklearn.model_selection import train_test_split
train_input, test_input, train_target, test_target = train_test_split(perch_length, perch_weight, random_state=42)
train_input = train_input.reshape(-1, 1)
test_input = test_input.reshape(-1, 1)
reshape(-1, 1) - numpy에 맞게 데이터 정렬. 열을 하나로 결정, 행은 주어진대로!
분류가 아닌 회귀라서 split할 때 straify 사용 안 함. default = false

회귀 모델 훈련
from sklearn.neighbors import KNeighborsRegressor
knr = KNeighborsRegressor()
knr.fit(train-input, train_target)
knr.score(test_input, test_target)
//0.9928094061010639
from sklearn.metrics import mean_absolute_error
test_prediction = knr.predict(test_error
test_prediction = knr.predict(test_input)
mae = mean_absolute_error(tset_target, test_prediction)
print(mae)
//19.157142857142862

분류 - Classifier
- 정확도
회귀 - Regressor
- R^2(결정계수)
예측이 평균과 비슷해지면 우측항이 1이 되어 R^2가 0이됨
예측이 타깃을 정확히 맞추면 우측항이 0이 되어 R^2가 1이 됨
0~1 값 가능.
1에 가까우면 좋은 회귀 모델 0에 가까우면 좋지 않은 회귀 모델로 결정 가능!
과대적합과 과소적합
knr.score(train_input, train_target) //과소적합(underfitting)
//0.9698823289099255
knr.score(test_input, test_target)
//0.9928094061010639
과소적합 - training set이 test set보다 큰 게 일반적인데 test set이 training set 보다 크게 나오는 경우.
training set가 과소적합됨(underfitting)
과대적합 - training set이 0.99 test set이 0.6인 경우처럼 테스트 세트와 훈련 세트가 너무 크게 차이가 나는 경우.
훈련 세트는 매우 잘 fit 되어야 함.
이웃 개수 줄이기
knr.n_neighbors = 3
//기본값은 5인데 3으로 설정하여 실행
knr.fit(train_input, train_target)
print(knr.score(train_input, train_target))
//0.9804899950518966
print(knr.score(test_input, test_target))
//0.974645996398761


k 값은 우리가 직접 정해줘야 함
지정할 수 있는 매개변수 - 하이퍼 파라미터
참고자료
https://www.youtube.com/watch?v=0mrLRkgbjA0&list=PLVsNizTWUw7HpqmdphX9hgyWl15nobgQX&index=6
'ICT 멘토링 > 혼자 공부하는 머신러닝+딥러닝' 카테고리의 다른 글
8강 - 특성 공학과 규제 알아보기 (0) | 2021.06.17 |
---|---|
7강 - 사이킷런으로 선형 회귀 모델 만들어 보기 (0) | 2021.06.17 |
5강 - 정교한 결과 도출을 위한 데이터 전처리 알아보기 (0) | 2021.06.17 |
4강 - 훈련 세트와 테스트 세트로 나누어 사용하기 (0) | 2021.05.27 |
3강 - 마켓과 머신러닝 (0) | 2021.05.27 |