티스토리 뷰
안녕하세요, 여러분! 오늘은 경사하강법(Gradient Descent)을 사용하여 간단한 선형회귀(Linear Regression) 문제를 풀어볼까요? 파이썬 코드를 이용하여 쉽게 이해하고 구현할 수 있습니다.
Andrew Ng의 Machine Learning lecture note를 참조했습니다. https://drive.google.com/file/d/10L-uvv2y6VI0Bgtv3-egqnR4JGcBTrlQ/view
먼저 필요한 라이브러리를 불러옵니다.
import numpy as np
import matplotlib.pyplot as plt
다음과 같은 5개의 샘플 데이터를 사용하겠습니다.
X = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4.2, 5.7, 8.4, 9.5])
이제 경사 하강법을 설정해야 합니다. 학습률(alpha)을 0.01로 설정하고, 반복 횟수(iterations)는 1000으로 설정합니다. 또한, 데이터의 개수(m)를 구합니다.
alpha = 0.01
iterations = 1000
m = len(y)
가중치(W)와 절편(b)의 초기값은 0.0으로 설정합니다.
W = 0.0
b = 0.0
이제 경사하강법을 이용하여 선형 회귀를 수행합니다. 반복문을 이용하여 오차(loss)를 계산하고, 가중치(W)와 절편(b)를 업데이트합니다.
for i in range(iterations):
y_pred = W * X + b
loss = (1 / (2 * m)) * np.sum((y_pred - y) ** 2)
dW = (1 / m) * np.sum((y_pred - y) * X)
db = (1 / m) * np.sum(y_pred - y)
W = W - alpha * dW
b = b - alpha * db
새로운 데이터를 이용하여 예측을 수행합니다.
X_new = np.array([1.5, 3.4, 6])
y_new = W * X_new + b
마지막으로 결과를 그래프로 시각화합니다.
plt.scatter(X, y, color='blue', label='Actual data')
plt.plot(X, W * X + b, color='red', label='Fitted line')
plt.scatter(X_new, y_new, color='green', marker='o', label='New predictions')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.title('Linear Regression with Gradient Descent')
plt.show()
위 코드를 실행하면, 실제 데이터(파란색 점), 선형 회귀 결과(빨간색 선) 및 새로운 데이터에 대한 예측(녹색 점)이 그래프로 나타납니다. 이렇게 경사하강법을 사용한 선형 회귀를 통해 데이터에 최적화된 직선을 찾을 수 있습니다.
728x90
반응형
'머신러닝 파이썬' 카테고리의 다른 글
판다스(Pandas)를 이용한 데이터 처리 기초 (0) | 2023.04.20 |
---|---|
판다스(Pandas)에서 iloc()과 loc()의 차이점 이해하기 (0) | 2023.04.20 |
파이썬을 활용한 데이터 처리 기초: Pandas와 Scikit-learn 소개 (0) | 2023.04.14 |
LSTM을 활용한 구글 주가 예측: 딥러닝을 이용한 주식 시장 맛보기 분석(feat. Keras) (0) | 2023.04.13 |
주가 데이터 군집화 탐색: PCA와 K-means를 활용한 시각적 분석 (0) | 2023.04.07 |
댓글