반응형
오늘의 목표
수학 성적 데이터가 총점을 예측하는 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차식을 찾아야하는데 이 때는 반복문, 조건문을 활용하면 된다.
반응형
'프로그래밍 > 머신러닝' 카테고리의 다른 글
집값과 경기종합지수의 상관관계_파이썬으로 머신러닝 배우기 (0) | 2021.04.19 |
---|---|
삼성전자, 현대자동차, LG화학 주가와 KOSPI 주가의 상관 관계 분석_파이썬으로 머신러닝 배우기 (0) | 2021.04.16 |
다중 선형 회귀_파이썬으로 머신러닝 배우기 (0) | 2021.04.14 |
단순 선형 회귀(LinearRegression)_파이썬으로 머신러닝 배우기 (1) | 2021.04.09 |
Machine Learning이란? pip install 모듈 설치하기_파이썬으로 머신러닝 배우기 (0) | 2021.04.07 |