구현하고자 하는 것
맨날 plt.plot 이나 scatter 으로 일일히 겹치는 건 지루하다!! for 문으로 그래프 드르륵 탁!
(for 문을 활용해서 다항 회귀의 차수에 따른 그래프를 겹쳐서 그리기)
단계별 코드
plt.figure()
plt.scatter(X,y, c = '#2EC4B6', s = 20, alpha = 0.3)
figure 랑 scatter 를 먼저 입력한다. figure 가 제일 위에 오는게 포인트!
col = ['orange','blue','green','red']
label = ['x^1','x^2','x^3','x^4']
for x in range(1,5) :
poly_reg_x = PolynomialFeatures(degree = x) #차수
X_deg = poly_reg_x.fit_transform(X)
p_reg = LinearRegression()
p_reg.fit(X_deg,y)
plt.plot(X,p_reg.predict(X_deg), lw = 1.2, c = col[x-1], label = label[x-1])
print(p_reg.score(X_deg,y))
여기가 가장 핵심!
for 문과 range 를 활용해서 차수(정수)를 뽑아 입력하는 방식이기 때문에,
정수를 색깔과 legend 를 위한 label 을 인덱싱하는 인덱스로 활용한다.
for 문 안에 있는 구체적인 모델 학습 절차 :
- degree 설정을 위한 PolynomialFeatures 객체 생성
- 객체를 활용해서 원래 생성해놓은 2차원 array(X)를 차수에 맞게 fit_transform
- LinearRegression 모델 생성
- 학습시키기
- 학습시킨 모델 바탕으로 plt.plot (for문과 같이 사용하면 여러 플롯을 겹쳐서 넣을 수 있다)
plt.ylim(0,100)
plt.xlabel('Temp(Std scaled)')
plt.ylabel('Ozone')
plt.legend()
plt.show()
마지막으로 부수적인 표시값들 입력하기.
결과
0.48796010099390796
0.5426269081225714
0.5479096894941288
0.5735866078941212
여기선 2차가 가장 데이터를 잘 표현해주는 것처럼 보인다. 물론 score는 차수가 올라갈수록 증가할 수 밖에.
상황에 맞게끔 차수의 조정이 필요하다. J Curve, Slide 등 차수가 높아야 표현할 수 있는 추세도 존재하기에!
관련 포스팅
[파이썬] airquality 데이터셋으로 머신러닝 배우기 <다항 회귀>
데이터이번엔 선형성이 강하지 않은 새로운 데이터를 사용해보고 싶었다. 파이썬에서 결측치 처리도 해볼겸..R의 airquality 데이터는 결측치를 포함하고 있고, 약한 선형성을 띄기에 ML을 연습하
skrrdevlog.tistory.com
[파이썬] 미국 경제 데이터셋으로 머신러닝 배우기 <선형회귀>
데이터R의 ggplot2 라이브러리의 "economics" 데이터를 활용했습니다. https://ggplot2.tidyverse.org/reference/economics.html US economic time series — economicsThis dataset was produced from US economic time series data available from h
skrrdevlog.tistory.com
'Coding & Data Analysis > Python' 카테고리의 다른 글
[Python/파이썬] 미국 경제 데이터로 배우는 머신러닝 <K-평균> (4) | 2025.01.09 |
---|---|
[파이썬] iris 데이터셋으로 머신러닝 배우기 <로지스틱 회귀> (1) | 2025.01.07 |
[파이썬] airquality 데이터셋으로 머신러닝 배우기 <다항 회귀> (1) | 2025.01.04 |
[파이썬] iris 데이터셋으로 머신러닝 배우기 <다중선형회귀 & 평가지표> (0) | 2025.01.02 |
[파이썬] 미국 경제 데이터셋으로 머신러닝 배우기 2 <경사 하강법> (1) | 2024.12.30 |