본문 바로가기

ML,DL

[ML] 선형 회귀 Linear Regression

k-최근접 이웃 회귀의 한계

가장 가까운 샘플을 찾아 타깃을 평균하므로 새로운 샘플이 훈련 세트의 범위를 벗어나면 엉뚱한 값을 예측 가능

선형 회귀

비교적 간단하고 성능이 뛰어나기 때문에 널리 사용되는 대표적인 회귀 알고리즘

특성이 하나인 경우 어떤 직선을 학습하는 알고리즘

 # 선형 회귀
 from sklearn.linear_model import LinearRegression
 lr = LinearRegression()

 # 선형 회귀 모델 훈련
 lr.fit(X_train, y_train)

 # 50cm 농어에 대해 예측
 lr.predict([[50]])
 
print(lr.coef_, lr.intercept_)

coef_ :  기울기

intercept_ : 절편

학습한 직선 그리기

# 학습한 직선 그리기
plt.scatter(X_train, y_train)

plt.plot([15,50],[15*lr.coef_+lr.intercept_, 50*lr.coef_+lr.intercept_])

plt.scatter(50, 1192.5, marker='^')
plt.xlabel('length')
plt.ylabel('weight')
plt.show()

 

다항 회귀

최적의 직선보다 최적의 곡선 찾기

2차 방정식의 그래프를 그리려면 길이를 제곱한 항이 훈련 세트에 추가되어야 함 : column_stack 사용

X = np.column_stack((X_train**2, X_train))

plt.scatter(X_train,y_train,label='train')

# 다항회귀(비선형)
lr.fit(X,y_train)
x_p = np.column_stack( (np.arange(50)**2,np.arange(50)) )
X_train_predict = lr.predict(x_p)
plt.plot(range(50),X_train_predict, color='green',label='poly_predict')

#단항회귀(선형)
lr.fit(X_train,y_train)
temp = np.arange(50).reshape(-1,1)
X_train_predict = lr.predict(temp)
plt.plot(range(50),X_train_predict, color='red',label='line_predict')

plt.legend()
plt.show()

 

'ML,DL' 카테고리의 다른 글

[ML] 확률적 경사 하강법  (0) 2024.04.08
[ML] 로지스틱 회귀 Logistic Regression  (0) 2024.04.08
[ML] Ridge, Lasso Regression  (0) 2024.04.08
[ML] 다중 회귀 multiple regression  (0) 2024.04.05
[ML] K-최근접 이웃 회귀  (0) 2024.04.05