import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = pd.DataFrame([[2,20],[4,40],[8,80],[9,90]],
index=['학생1','학생2','학생3','학생4'],
columns=['시간','성적'])
data
1. 수학 공식을 이용한 해석적 모델
- LinearRegression
from sklearn.linear_model import LinearRegression
linear_model = LinearRegression()
linear_model.fit(data[['시간']] , data['성적']) # 문제는 2차원으로 넣어줘야한다.
# y = 10 * x + 0
print(linear_model.coef_) # 가중치
print(linear_model.intercept_) # 절편
linear_model.predict([[7]])
2. 경사하강법
- 가중치(w)변화에 따른 비용함수(cost)값의 변화 그래프
H(x)
def h(w,x): # 가설함수
return w * x + 0
Cost function
def cost(data, target, weight): # MSE
y_pre = h(weight, data) # 예측 값
return ((y_pre - target) ** 2).mean() # cost 값
cost(data['시간'] , data['성적'], 10)
cost(data['시간'] , data['성적'], 12)
cost(data['시간'] , data['성적'], 20)
cost(data['시간'] , data['성적'], 8)
cost(data['시간'] , data['성적'], 25)
weight_arr = range(-10,31)
cost_list = []
for w in weight_arr:
c = cost(data['시간'], data['성적'], w)
cost_list.append(c)
cost_list
plt.plot(weight_arr, cost_list)
plt.show()
SGDRegressor 사용하기
from sklearn.linear_model import SGDRegressor
sgd_model = SGDRegressor(max_iter=5000, # 가중치 업데이트 반복 횟수(epoch)
eta0=0.1, # 학습률 (learning rate)
verbose=1) # 학습 과정을 확인 할 수 있다.
sgd_model.fit(data[['시간']], data['성적'])
sgd_model.predict([[7]])
print(sgd_model.coef_)
print(sgd_model.intercept_)
'Programming > Machine Learning' 카테고리의 다른 글
손글씨 분류 실습 (0) | 2020.02.17 |
---|---|
보스턴주택 값 예측 (0) | 2020.02.17 |
타이타닉 생존자 예측 분석 (0) | 2020.02.17 |
버섯데이터 분류 (0) | 2020.02.17 |
iris 품종분류 (0) | 2020.02.17 |