내용을 시작하기 전에...
2주차 공부를 위해 터벅슨 터벅슨... 카페를 가고 있는 나에게 온 메세지 하나
다른 사람들이 올린 글도 구경 많이 했는데 다들 열심히 하셨길래
와 우수혼공족은 절대 못 되겠다... 싶었는데ㅜㅜ
감사합니다...
자유게시판 대화 눈팅하다 매머드 커피 알게 됐는데..ㅎㅎ 이걸 받아버렸다!!!
열심히 할게요 ㅎ
지도 학습 알고리즘
데이터 불러오기 -> 산점도 그려보기 -> 훈련/테스트 세트로 나누기
=> perch_length가 1차원 배열이라 train_input, test_input 모두 1차원 배열
당연함. 그걸 이용해 만든 거임.
사이킷런에 사용할 훈련 세트는 2차원 배열이어야 하기 때문에 변환해야 함!
크기가 (3, )인 배열과 (3, 1)인 배열 -> 원소의 개수는 동일
reshape()사용해 배열 크기 변경 -> 배열 크기 지정 가능
#test_array()는 (4,)배열
test_array = test_array.reshape(2, 2) #배열 크기 지정
print(test_array,shape)
지정 크기와 원본 배열의 원소의 개수가 동일해야 함
=> 점수의 의미
분류 -> 정확도
회귀 -> 결정계수(R²)
> 결정계수(R²)
T : 타깃
P : 예측
A : 평균
mean_absolute_error
-> 타깃과 예측의 절댓값 오차를 평균해 반환
=> 과소 적합
=> 실습의 과소적합 문제를 해결하기 위해선 모델을 복잡하게 만들기!
K-NN의 경우 기본 k값은 5 -> 3으로 낮추기
=> 3 - 1에서와 마찬가지로 최근접 이웃 개수를 3으로 모델 훈련
=> 모델의 예측 값과 일치
=> 새 샘플이 훈련 세트의 범위를 벗어나면 정확한 예측 불가능
=> 이것이 K-NN의 한계!! 다른 알고리즘을 이용해야 함
: 특성이 하나인 경우 어떤 직선을 학습하는 알고리즘
=> 이 세 가지 그래프 중 그래프 3이 데이터를 가장 잘 표현
y : 농어 무게
x : 농어 길이
a : 기울기
b : 절편
=> 예측 값이 직선의 연장선에 존재 즉, 예측에 성공!
=> 뭔가 싸늘함을 느낄 수 있음..
무게가 0 이하? 현실 초월이 되...
y : 농어 무게
x : 농어 길이
무게 = 1.01 길이² - 21.6 길이 + 116.05 -> 다항식 -> 다항 회귀
: 기존의 특성을 활용해 새 특성을 뽑아냄
=> 두 점수 확인 결과 과소적합 문제 해결된 것을 알 수 있음
=> 열의 개수 = 특성의 개수
여기서 드는 의문점 -> 이러면 과대적합 될텐데... 이걸 노리고 하는 거겠죠???
=> 대박적인 점수... 레전드 과대적합
: ML 모델이 훈련 세트에 과대적합되지 않게 함
=> ss 초기화 후 훈련 어게인
=> 테스트 세트 점수 정상화
alpha 값으로 규제 강도 조절
값이 크면 과소적합, 값이 작으면 과대적합 될 가능성 큼
적절한 alpha값 -> alpha값에 대한 R²값의 그래프 그려보기
train과 test 점수가 가장 가까운 지점이 최적의 alpha값
=> 동일한 간격으로 값을 출력하기 위해 로그함수로 바꿔 지수로 표현
=> 왼쪽 : 과대적합, 오른쪽 : 과소적합
적절한 alpha값 -> -1 즉, 0.1
릿지를 라쏘로 바꾸면 끝.
=> 마찬가지로 왼쪽 : 과대적합, 오른쪽 : 과소적합
적절한 alpha값 -> 1 즉, 10=> 라쏘는 계수 값을 아예 0으로 만들 수 있음. 마지막 코드는 0의 개수를 출력한 것