일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 시각화
- 데이터전처리
- 머신러닝
- python기초
- python
- 정확도
- MariaDB
- 훈련
- 선형회기모델
- 해석
- 딥러닝
- HeidiSQL
- Database
- 회귀모델
- pythone
- sklearn
- 예측
- 파이썬
- pandas
- 데이터 가공
- 데이터 수집
- keras
- 알고리즘기초
- Deep Learning
- SQL예제
- tensorflow
- 크롤링(crawling)
- 데이터
- 데이터 분석
- 데이터베이스
- Today
- Total
코딩헤딩
[ML(머신러닝)] KNN 회귀모델 -1 본문
* KNN회귀모델
- K Nearest Neighbor
1. 데이터 확인
1) 길이로 무게 예측하기
perch_length.shape, perch_weight.shape
결과 : ((56,), (56,))
- 길이 : 문제(독립변수) / 무게(연속형) : 답(종속변수)
2) 산점도 그리기
import matplotlib.pyplot as plt
plt.scatter(perch_length, perch_weight)
plt.xlabel("length")
plt.ylabel("weight")
plt.show()
<해석>
- 초반에는 곡선을 띄는 듯하다가, 중반부부터는 직선의 형태를 나타내고 있음.
- 종속변수가 연속형 데이터이기에, 선형 분포를 나타내기에 회 귀모델을 사용함.
3) 훈련 및 테스트 데이터 분류하기
* 훈련 : 테스트 = 75 : 25로 구분
사용변수 : train_input, train_target, test_input, test_target
from sklearn.model_selection import train_test_split
train_input, test_input, train_target, test_target = train_test_split(perch_length,
perch_weight,
test_size=0.25,
random_state=42)
print(f"{train_input.shape} : {train_target.shape}")
print(f"{test_input.shape} : {test_target.shape}")
결과 : (42,) : (42,)
(14,) : (14,)
4) 훈련 및 테스트의 독립변수를 2차원으로 만들기
### 훈련 독립변수 2차원 만들기
train_input = train_input.reshape(-1, 1)
### 테스트 독립변수 2차원 만들기
test_input = test_input.reshape(-1, 1)
print(f"{train_input.shape} / {test_input.shape}")
결과 : (42, 1) / (14, 1)
5) 모델훈련하기
from sklearn.neighbors import KNeighborsRegressor
# 모델생성
knr = KNeighborsRegressor()
# 모델훈련시키기
knr.fit(train_input, train_target)
6) 정확도 확인
* 정확도에 대한 용어 정의
- 분류에서는 "정확도"라고 칭하며, 회귀에서는 "결정계수(R^2)이라고 칭한다.
### 훈련 정확도 확인
train_r2 = knr.score(train_input, train_target)
### 테스트 정확도 확인
test_r2 = knr.score(test_input, test_target)
print(f"훈련 : {train_r2} / 테스트 : {test_r2}")
결과 : 훈련 : 0.9698823289099254 / 테스트 : 0.992809406101064
<해석>
- 훈련 정확도는 매우 높게 나타난 성능좋은 모델로 판단됨
- 그러나, 과적합 여부를 확인한 결과 , 훈련 정확도가 테스트 정확도보다 낮게 나타난 것으로 보아
과소적합이 발생하고 있는 것으로 판단됨
- 이는 데이터의 갯수가 작거나, 튜닝이 필요한 경우로 아후 진행을 하고자 함.
여기까지 해서 길이를 가지고 무게를 예측할 수 있도록 해보았다.
하지만 해석결과 더 정확한 결과를 위해서는 튜닝이 필요했다.
다음 글에서는 그 과정을 담아보겠다.
'머신러닝 | 딥러닝' 카테고리의 다른 글
[ML(머신러닝)] KNN 회귀모델 -3 <하이퍼파라미터 튜닝> (0) | 2023.12.26 |
---|---|
[ML(머신러닝)] KNN 회귀모델 -2 <절대평균오차(MAE)> (0) | 2023.12.24 |
[ML(머신러닝)] 머신러닝 기초 3-1 <훈련 및 테스트 분류(numpy 셔플링)> (2) | 2023.12.21 |
[ML(머신러닝)] 머신러닝 기초 2 <하이퍼파라미터튜닝> (0) | 2023.12.20 |
[ML(머신러닝)] 머신러닝 기초 1 <K최근접이웃모델> (1) | 2023.12.20 |