Machine Learning/회귀모델
선형회귀모델 ( LinearRegressor ) 실습 [ SGD Regressor (경사하강법) ]
by leehii
2022. 8. 10.
mse공식을 사용해서 오차값을 계산하는 cost함수 (비용함수) :
오차값이 가장 작을때 최적의 직선 , 최적의 선형 함수 모델이다
최적의 선형함수를 만들기위해 가설을 계속해서 설정해줘야 함 >> 경사하강법을 이용
=======================================================
data['시간'] = 문제 데이터 (한 컬럼을 인덱싱했으므로 Series 형태)
data['성적'] = 답 데이터 (한 컬럼을 인덱싱했으므로 Series 형태)
>> 문제데이터의 값은 2차원데이터 형태로 변환해서 넣어줘야 함
선형회귀모델 ( LinearRegressor)
from sklearn.linear_model import LinearRegression
linear_model = LinearRegression()
필요한 도구 불러온 후 모델 객체 생성
하나의 컬럼 = 1차원 데이터 >> 문제데이터로 넣기위해 2차원데이터 형태로 변환필요
모델명.fit(문제데이터, 답 데이터)
y = 10x + 0 형태인것이 확인됨
w 파라미터 : model.coef_
b 파라미터 : model.intercept_
모델명.predict(테스트셋 문제)
문제데이터이므로 마찬가지로 2차원형태로 가공
7시간라는 문제데이터에 대해 정답을 70점으로 예측함
y(답) = a(가중치, w) * x(문제, 피처) + b(절편) 로 정답을 예측하는 함수 H(x)
cost(오차값) = H(x) :예측정답 y - y (실제 답) 에 제곱을 해주고 이 값을 mean으로 평균을 낸 값
예측값-정답 : 오차
오차**2 : 제곱
mean() : 평균
MSE : 평균제곱오차
MSE 평균제곱오차를 이용해서 cost값을 확인한다
for 문을 이용하며 -10 ~ 30까지의 범위를 주고
error 변수에 cost값, 즉 오차값을 담아준다.
해당 값을 append로 cost_list라는 리스트에 담아준다
plt.,plot(x축, y축) 선형그래프로 시각화 한 모습
plt.plot([x축리스트], [y축리스트]) : 선형그래프
plt.bar([x축리스트], [y축리스트]) : 세로형 막대그래프
plt.barh([x축리스트], [y축리스트]) : 가로형 막대그래프
plt.pie(리스트, lables = 라벨리스트) : 원형그래프
plt.scatter(x좌표 리스트, y좌표 리스트) : 산포도그래프
plt.hist() : 히스토그램 그래프
from sklearn.liner_model import SGDRegressor
sgd모델명 = SGDRegressor (하이퍼 파라미터 값)
max_itra : 가중치 갱신횟수
eta0 = 학습률 (Learning_rate)
학습이 진행됨에 따라 loss값이 줄어드는것이 확인된다
7시간 공부했을때 69.88~점을 예상함
loss가 완전히 0이 되지않는 이유는 하이퍼 파라미터를 사람이 조절하기 떄문
학습률을 조정하니 예측값이 더 정답에 가까워짐