Linear Regression Code Example
선형회귀 모형을 알아보기 위한 간단한 코드 예시 입니다.
모델 학습 환경은 Jupyter Notebook을 이용하였습니다.
sklearn 라이브러리를 통해 간단한 회귀 예측을 해보겠습니다.
라이브러리 불러오기
from sklearn.linear_model import LinearRegression
import pandas as pd
import matplotlib.pyplot as plt
키와 몸무게가 들어있는 파일 준비
# 파일 경로의 경우 사용자의 경로에 맞게 수정해주셔야 합니다.
df = pd.read_csv("C:/Users/User/Downloads/height_weight.csv")
위의 데이터는 kaggle(https://www.kaggle.com/datasets/mustafaali96/weight-height?resource=download)의 키와 몸무게에 대한 데이터를 약 100개 정도만 추리고 성별 column을 제거하여 .csv 파일로 저장하였습니다.
데이터 중 위에서 5개의 데이터만 확인해보는 코드
df.head()
df.head()의 경우 위에서 5개의 코드만 보여주지만 괄호() 안에 숫자를 넣으면 그 숫자만큼 데이터를 보여줍니다.
matplotlib으로 주어진 데이터 시각화
X = df["Height"] # .csv 파일의 Height column의 데이터를 X로 읽어들입니다.
y = df["Weight"] # .csv 파일의 Weight column의 데이터를 y로 읽어들입니다.
plt.plot(X, y, 'o')
plt.show()
시각화를 통해 주어진 데이터가 우상향 패턴을 보인다는 것을 알 수 있습니다.
모델 정의 및 데이터를 모델에 맞게 맞추어 줍니다.
linear_regression = LinearRegression()
linear_regression.fit(X.values.reshape(-1,1), y)
임의의 데이터를 넣어 예측을 합니다.
print(linear_regression.predict([[72.12523]]))
임의의 키 72.12523를 넣었을 때, 몸무게가 204.97262149로 나타났습니다.
(원본 데이터의 키의 단위는 Inch이고 몸무게는 Pound(lbs)를 사용하였습니다. 조금 이상해 보일지라도 예측에는 문제가 없기 때문에 그대로 사용하도록 하겠습니다.)
만약 linear_regression.predict([[?]]) 에 다른 데이터를 넣으면 다른 예측값을 나타냅니다.
print(linear_regression.predict([[62.23893]]))
다음은 우리가 예측한 직선의 기울기를 알아보겠습니다.
print(linear_regression.coef_)
우리는 height라는 하나의 column만 사용했기 때문에 1차함수의 직선형태 그래프가 나올 것입니다. 따라서 다른 값을 넣어도 기울기는 똑같이 나오게 됩니다.
기울기를 알아보았으니 절편(bias)을 알아보도록 하겠습니다
print(linear_regression.intercept_)
절편은 그림 6. 과 같이 나타납니다.
그림 6.1 처럼 print(df.min())을 작성하여 우리가 미리 준비한 데이터의 최소값을 확인할 수 있습니다.
주어진 데이터의 최소값이 63.456494이기 때문에 X가 0일 경우의 y 절편이 음수가 나타났다고 할 수 있습니다.
마지막으로 주어진 데이터(X)에 대한 레이블(Y)의 상관관계를 그래프를 통해 알아보겠습니다.
plt.plot(X, y, 'o')
plt.plot(X,linear_regression.predict(X.values.reshape(-1,1)))
plt.xlabel("Height")
plt.ylabel("Weight")
plt.show()
해당 코드를 작성해서 실행해보면 다음과 같은 그래프가 나오게 됩니다.
그림 7.과 같이 직선이 생기기 전의 우상향 패턴과 비슷하게 그래프가 그려진 것을 알 수 있습니다.
마치며
위의 예시 코드는 단순 선형회귀를 알아보기 위해 간단하게 만들어본 모델입니다.
다음 글에서는 x의 column이 하나가 아닌 여러개인 데이터에 대하여 예측을 하는 모델을 만들어 보겠습니다.
'Code Example' 카테고리의 다른 글
Support Vector Machine(SVM)을 활용한 타이타닉 생존자 예측 (0) | 2023.03.16 |
---|---|
Random Forest (Titanic 생존자 예측) (0) | 2023.02.09 |
Decision Tree Code Example(Titanic 생존자 예측) (0) | 2023.02.08 |
Multiple Linear Regression Code Example (0) | 2023.02.08 |
K-Nearest Neighbor Code Example(K-NN - Titanic 생존자 예측) (0) | 2023.01.19 |
댓글