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강)에서 데이터를 쪼개놓은 상태에서 이어지는 코드입니다.
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)이 완료되었습니다!")
[실행 후 결과 값]
🎉 모델 학습(Training)이 완료되었습니다!
(선형회귀는 통계적 공식을 사용하여 답을 도출하기 때문에 데이터가 엄청 많아도 눈 깜짝할 새(1초 이내)에 학습이 끝납니다.)
💡 튜터의 보충 설명: 학습이 끝난 모델은 무엇을 가지고 있을까?
선형회귀는 1차 함수 방정식인 $y = ax + b$ (또는 $y = a_1x_1 + a_2x_2 + b$) 의 형태를 찾습니다.
regressor.fit()이 끝났다는 것은 인공지능이 데이터의 패턴을 분석해서 최적의 기울기($a$, 가중치)와 y절편($b$, 편향)을 찾아냈다는 뜻입니다.
궁금하다면 아래 코드로 인공지능이 찾아낸 공식을 몰래 엿볼 수 있습니다. (영상에는 없지만 실무에서 모델을 이해할 때 꼭 확인합니다)
# 모델이 찾아낸 가중치(기울기, coef_)와 편향(y절편, intercept_) 확인하기
print("--- 모델이 찾아낸 수학 공식 ---")
print(f"가중치 (기울기): {regressor.coef_}")
print(f"편향 (y절편): {regressor.intercept_}")
예상 실행 결과:
--- 모델이 찾아낸 수학 공식 ---
가중치 (기울기): [[ 0.052 -0.312 ]]
편향 (y절편): [ 12.45 ]
해석: 비행 지연 시간(y) = 0.052 * 거리($x_1$) + (-0.312) * 예정시간($x_2$) + 12.45
인공지능은 수십만 개의 데이터를 보고 스스로 저 숫자들을 찾아낸 것입니다!
다음 시간에는 이렇게 똑똑해진(학습된) 모델에게, 아까 꽁꽁 숨겨두었던 X_test(모의고사 문제)를 풀게 해서, 실제 정답(y_test)과 얼마나 똑같이 맞추는지 평가하는 과정을 배우게 될 거예요!
'두두 IT > 머신런닝(ML)' 카테고리의 다른 글
| 모델의 정확도 평가(accuracy evaluating) (0) | 2026.05.17 |
|---|---|
| 머신러닝 모델 테스트 (0) | 2026.05.17 |
| scikit-learn으로 트레이닝 데이터와 테스트 데이터 분할 (0) | 2026.05.17 |
| 중복데이터와 결측값(missing value) 처리 (0) | 2026.05.17 |
| Pandas DataFrame 컬럼(column) 분할(split)과 삭제(remove) (0) | 2026.05.17 |