데이터분석-머신러닝-AI/강의 정리

[혼자 공부하는 머신러닝+딥러닝] 7강. 사이킷런으로 선형 회귀 모델 만들어 보기 - 선형 회귀, 다항회귀

bluebamus 2023. 10. 24.

https://www.youtube.com/watch?v=xkknXJeEaVA&list=PLJN246lAkhQjoU0C4v8FgtbjOIXxSs_4Q&index=8

 - K-Neighbors은 범위를 크게 벗어난 데이터에 대해 이웃한 데이터가 없는 경우 이 중에서 가장 인접한 이웃들을 가지고 평가하기 때문에 올바른 결과를 판별할 수 없다. 

   - 이는 훈련세트 범위 밖의 데이터를 가지고 예측/추정하기 어렵다. 

 - 이러한 경우, 문제를 해결하기 위해서 선형회귀(linear ragression) 방법을 사용한다.

 

 - LinearRegression

   - 사용 방법 :

   - 기울기는 약 39, y 절편은 약 마이너스 709이다

from sklearn.linear_model import LinearRegression

lr = LinearRegression()
# 형 회귀 모델 훈련
lr.fit(train_input, train_target)

# 50cm 농어에 대한 예측
print(lr.predict([[50]]))
[1241.83860323]

print(lr.coef_, lr.intercept_)
[39.01714496] - 709.0186449535477

 

 - 사이킷런 모델들은 어떤 값들에서 학습한 값들을 저장할 때 다른 속성과 구분하기 위해 속성 끝에 밑줄 문자를 추가한다.

 

 - 학습한 직선 그리기

   - 일차식 y = ax+b

# 훈련 세트의 산점도를 그린다
plt.scatter(train_input, train_target)

# 15에서 50까지 1차 방정식 그래프를 그립니다.
plt.plot([15, 50], [15*lr.coef_ + lr.intercept_, 50*lr.coef_ + lr.intercept_])

# 50cm 농어 데이터
plt.scatter(50, 1241.8, marker='^')
plt.show()


print(lr.score(train_input, train_target))
0.9398463339976039

print(lr.score(test_input, test_target))
0.8247503123313558

 

 - 다항회귀 : x의 다항식을 만들어 선형회귀를 하는 방식

   - 이차식 y=ax^2 +bx +c

train_poly = np.column_stack((train_input ** 2, train_input))
test_poly = np.column_stack((test_input ** 2, test_input))

 - 모델 다시 훈련

   - 무게 = 1.01 x 길이 ^2 - 21.6 x 길이 + 116.05

lr = LinearRegression()
# 형 회귀 모델 훈련
lr.fit(train_poly, train_target)

# 50cm 농어에 대한 예측
print(lr.predict([[50**2, 50]]))
[1573.98423528]

print(lr.coef_, lr.intercept_)
[1.01433211 -21.55792498] 116.0502107827827

 

 - 학습한 직선 그리기

# 구간별 직선을 그리기 위해 15에서 49까지 정수 배열을 만듭니다
point = np.arrange(15, 50)

# 훈련 세트의 산점도를 그립니다.
plt.scatter(train_input, train_target)

# 15에서 49까지 2차 방정식 그래프를 그립니다
plt.plot(point, 1.01*point**2 - 21.6*point + 116.05)

# 50cm 농어 데이터
plt.scatter([50], [1574], marker = '^')
plt.show()

print(lr.score(train_poly, train_target))
0.9706807451768623

print(lr.score(test_poly, test_target))
0.9775935108325122

 

 - reference : 

https://speedanddirection.tistory.com/73

 

혼자 공부하는 머신러닝+딥러닝(ch3-2 선형회귀)

03-2 선형 회귀¶ - k-최근접 이웃의 한계¶ 앞서 사용한 데이터와 모델을 준비하자. In [19]: import numpy as np perch_length = np.array( [8.4, 13.7, 15.0, 16.2, 17.4, 18.0, 18.7, 19.0, 19.6, 20.0, 21.0, 21.0, 21.0, 21.3, 22.0, 22.0,

speedanddirection.tistory.com

https://wikidocs.net/92110

 

18. Matplotlib 산점도 그리기

![](https://wikidocs.net/images/page/92110/scatter_plot_00.png) **산점도 (Scatter plot)**는 두 변수의 상관…

wikidocs.net

https://blog.naver.com/breezehome50/222311516510

 

[파이썬 시각화] 산점도, 스캐터 플롯 (Scatter Plot)

산점도 (Scatter Plot) 산점도(Scatter Plot)은 두 연속변수간의 상관관계를 확인하기에 유용한 그래프...

blog.naver.com

 

댓글