본문 바로가기
두두 IT/머신런닝(ML)

scikit-learn으로 선형회귀(linear regression) 모델 머신러닝 트레이닝 수행

by DoDo's 2026. 5. 17.
반응형

1. 머신러닝의 두 가지 큰 산: 분류(Classification) vs 회귀(Regression)

강사님이 초반에 머신러닝의 종류를 설명하시는데, 이 개념이 정말 중요합니다. 우리가 어떤 인공지능을 만들고 싶냐에 따라 모델이 달라지기 때문입니다.

  • 분류 (Classification): * 정답이 딱딱 끊어지는 '카테고리(객관식)'일 때 사용합니다.
    • 예시: 이 사진이 강아지야? 고양이야? / 이 메일이 스팸메일이야? 아니야? / 환자의 종양이 악성(암)인가? 양성인가?
  • 회귀 (Regression) 🌟 (오늘 배울 내용!):
    • 정답이 연속적인 '숫자(주관식)'일 때 사용합니다.
    • 예시: 내일 서울의 온도는 '몇 도'일까? (23.5도, 24도...) / 비행기가 '몇 분' 연착될까? (15분, 17.5분...) / 이 집의 가격은 '얼마'일까?

우리는 지금 "비행기가 몇 분 연착될까?"라는 연속된 숫자를 맞추고 싶으므로 선형회귀(Linear Regression) 알고리즘을 사용합니다.


2. 선형회귀(Linear Regression) 모델 트레이닝

[이론: Fit(학습) 이란?]

사이킷런(scikit-learn)에서 머신러닝 모델을 공부시키는 마법의 주문은 바로 fit() 이라는 함수입니다.

모델에게 X_train(문제지)과 y_train(정답지)을 같이 던져주고, "자, 이 문제(X)들의 정답(Y)이 이거니까, 둘 사이의 패턴을 스스로 찾아봐!"라고 명령하는 과정입니다.

[코드 & 상세 주석]

이전 시간(10강)에서 데이터를 쪼개놓은 상태에서 이어지는 코드입니다.

Python
 
import pandas as pd
from sklearn.model_selection import train_test_split

# ---------- [이전 강좌 복습: 데이터 준비 및 분할] ----------
delay_df = pd.read_csv('flight_delays_large.csv')
delay_df.dropna(inplace=True) # 결측치 제거

# X(피처, 문제)와 y(라벨, 정답) 분리
X = delay_df.loc[:, ['DISTANCE', 'CRS_ELAPSED_TIME']]
y = delay_df.loc[:, ['ARR_DELAY']]

# 학습용(Train)과 테스트용(Test)으로 7:3 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# --------------------------------------------------------

# ---------- [오늘의 핵심: 모델 생성 및 학습(Training)] ----------

# 1. 사이킷런에서 '선형회귀' 알고리즘을 불러옵니다.
from sklearn.linear_model import LinearRegression

# 2. 선형회귀 모델의 객체(빈 껍데기 인공지능)를 생성합니다.
# 강사님 코드에서 regressor 객체를 만드는 과정입니다.
regressor = LinearRegression()

# 3. 모델 학습(Training) 시키기! 🌟
# .fit(문제지, 정답지) 함수를 사용하여 모델을 공부시킵니다.
# 오직 학습용 데이터(Train)만 사용해야 합니다! (Test 데이터는 건드리면 안 됨)
regressor.fit(X_train, y_train)

# 위 코드가 에러 없이 실행되었다면, 
# 'regressor'라는 인공지능이 "거리와 소요시간"을 보고 "연착 시간"을 예측하는 방법을 깨우친 상태입니다!

print("🎉 모델 학습(Training)이 완료되었습니다!")

[실행 후 결과 값]

Plaintext
 
🎉 모델 학습(Training)이 완료되었습니다!

(선형회귀는 통계적 공식을 사용하여 답을 도출하기 때문에 데이터가 엄청 많아도 눈 깜짝할 새(1초 이내)에 학습이 끝납니다.)


💡 튜터의 보충 설명: 학습이 끝난 모델은 무엇을 가지고 있을까?

선형회귀는 1차 함수 방정식인 $y = ax + b$ (또는 $y = a_1x_1 + a_2x_2 + b$) 의 형태를 찾습니다.

regressor.fit()이 끝났다는 것은 인공지능이 데이터의 패턴을 분석해서 최적의 기울기($a$, 가중치)와 y절편($b$, 편향)을 찾아냈다는 뜻입니다.

궁금하다면 아래 코드로 인공지능이 찾아낸 공식을 몰래 엿볼 수 있습니다. (영상에는 없지만 실무에서 모델을 이해할 때 꼭 확인합니다)

Python
 
# 모델이 찾아낸 가중치(기울기, coef_)와 편향(y절편, intercept_) 확인하기
print("--- 모델이 찾아낸 수학 공식 ---")
print(f"가중치 (기울기): {regressor.coef_}")
print(f"편향 (y절편): {regressor.intercept_}")

예상 실행 결과:

Plaintext
 
--- 모델이 찾아낸 수학 공식 ---
가중치 (기울기): [[ 0.052  -0.312 ]]
편향 (y절편): [ 12.45 ]

해석: 비행 지연 시간(y) = 0.052 * 거리($x_1$) + (-0.312) * 예정시간($x_2$) + 12.45

인공지능은 수십만 개의 데이터를 보고 스스로 저 숫자들을 찾아낸 것입니다!

다음 시간에는 이렇게 똑똑해진(학습된) 모델에게, 아까 꽁꽁 숨겨두었던 X_test(모의고사 문제)를 풀게 해서, 실제 정답(y_test)과 얼마나 똑같이 맞추는지 평가하는 과정을 배우게 될 거예요!

반응형