본문 바로가기
프로그래밍/머신러닝

단순 선형 회귀 2차식, 3차식, n차식까지 만들기(PolynomialFeatures)_파이썬으로 머신러닝 배우기

by 조크리 2021. 4. 12.
반응형

 

오늘의 목표

 

수학 성적 데이터가 총점을 예측하는 2차~6차 회귀 식을 만들어 보자!

 

지난 글에서는 수학 성적 데이터로 총점을 예측하는 1차 함수 회귀 식을 만들어보았다. 

 

이번에는 1차 함수 뿐만 아니라 2차, 3차...6차 등 n차 함수를 만들어보려 한다! 

 

 

1. x값, y값, 예측 식 확인 

 

x값= 수학 성적(엑셀 파일)

y값 = 총점(엑셀 파일)

 

라고 했을 때 2차 함수를 예측하려한다. 

그 식은 

 

y = ax² + bx + c

 

로 볼 수 있는데 

 

중요한 것은 기울기와 y절편을 찾는 것이다! 

 

결국 

 

총점 = x * 수학 * 수학 - y * 수학 + z

 

의 형태로 나오게 된다. 

 

 

2. repl.it에서 코딩해보기! 

이번에는 직접 repl.it에서 코딩해보자!

컴퓨터에 파이썬을 깔고 pip install을 안해도 repl.it에서 알아서 모듈을 설치하고 구동까지 되니까 넘 편하다!

 

from sklearn.linear_model import LinearRegression
#2차 함수를 만들기 위한 import 
from sklearn.preprocessing import PolynomialFeatures
import matplotlib.pyplot as plot
import numpy as np
import sklearn
import pandas as pd
import openpyxl
plot.rcParams["font.family"] = 'Malgun gothic'

data = pd.read_excel("student.xlsx", header=0)
print(data)
newData = data[['kor', 'eng', 'math', 'social', 'science', 'total']]

#단순 회귀 모델 생성
model = LinearRegression()

#속성(변수)선택
x = newData[['math']]
y = newData[['total']]

#변환
poly = PolynomialFeatures(degree = 2) # 2차함수 적용
x_poly = poly.fit_transform(x) # 데이터를 2차식으로 변형

model.fit(x_poly, y)

#예측 모델 생성
y_p = model.predict(x_poly)

#출력
print('원 데이터 : ', x.shape)
print('2차항 변환 데이터 : ', x_poly.shape)
print(x_poly)
#기울기와 y절편 출력
print('기울기 a : ', model.coef_)
print('y절편 : ', model.intercept_)

#결정계수
relation_square = model.score(x_poly, y)
print('결정계수 : ', relation_square)

#그래프로 나타내기 
plot.scatter(x, y, marker = '+')
plot.scatter(x, y_p, marker = 'o')
plot.show()

 

 

 

이번에는 다른 그래프로 나타내보았다. 

 

 

 

 

3. 6차식으로 만들어보기 

 

이번에는 6차식으로 만들어보자. 

 

6차식으로 만들려면 degree를 6으로 바꾸어주면 된다.

6차식으로 만드니까 결정계수가 좀 더 올라갔다. 

 

이렇게 3차식, 4차식 등 원하는 식으로 만들어줄 수 있다. 

 

하지만 100차식을 만들면 오히려 결정계수가 줄어든다. 

내가 가지고 있는 데이터에 적절한 n차식을 찾아야하는데 이 때는 반복문, 조건문을 활용하면 된다. 

반응형