PROGRESS
11 / 14
단원
데이터 구조화: AI 전처리 17
데이터의 규칙: 예측 로직 14
옷의 시너스: 판단 로직 1
예와 아니오: 판단 로직 6
닮은꼴 찾기: 관계 로직 7
최적의 경로: 강화 로직 7
층층이 지능: 신경망 로직 7
전체 목록
QUESTION 11 #338
Scikit-learn을 사용하여 선형 회귀 모델을 생성(LinearRegression), 학습(fit), 예측(predict)하는 전체 파이프라인을 완성하세요.
main.py
from sklearn.linear_model import LinearRegression
import numpy as np
# 데이터 준비 (2차원 구조)
X = np.array([[1], [2], [3]])
y = np.array([10, 20, 30])
# 1. 모델 객체 생성
model = ()
# 2. 데이터 학습
model.(X, y)
# 3. 새로운 값(4) 예측
pred = model.([[4]])
print(f"예측값: {pred}")
HINT
모델 객체를 생성하는 클래스명은 LinearRegression(), X와 y의 규칙을 찾아내는 메서드는 fit(), 예측 메서드명은 predict()입니다.
실행 결과 예시
예측값: [40.]
INTERACTIVE SHELL
Shift + Enter 로 즉시 실행
🛠️ 머신러닝의 표준 프로세스
거의 모든 머신러닝 라이브러리는 아래 3단계 인터페이스를 따릅니다.
1단계: 모델 객체 생성 (인스턴스화)
model = LinearRegression()
사용할 알고리즘을 선택하여 객체로 만듭니다.
이 시점에서는 아직 아무것도 학습하지 않은 빈 모델입니다.
| 알고리즘 | 클래스명 | 용도 |
|---|---|---|
| 선형 회귀 | LinearRegression() | 연속값 예측 (가격, 온도 등) |
| 로지스틱 회귀 | LogisticRegression() | 분류 (스팸/정상 등) |
| KNN | KNeighborsClassifier() | 유사도 기반 분류 |
2단계: 학습 (fit)
model.fit(X, y)
fit()은 머신러닝에서 가장 중요한 메서드입니다.
- X: 입력 데이터 (문제지) — 반드시 2차원 배열이어야 합니다
- y: 정답 데이터 (해답지) — 1차원 배열
이 과정에서 모델 내부의 가중치($w$)와 편향($b$)이 최적화됩니다.
# fit() 호출 전: w=?, b=? (모름)
# fit() 호출 후: w=10, b=0 (데이터에서 찾아냄)
왜 X는 2차원이어야 할까?
# 1차원: [1, 2, 3] → 데이터가 3개인지, 특성이 3개인지 모호
# 2차원: [[1], [2], [3]] → "1개의 특성을 가진 데이터가 3개" 라고 명확
실무에서는 특성이 여러 개인 경우가 대부분입니다:
# 특성 2개 (기온, 습도) x 데이터 3개
X = [[20, 70], [25, 80], [30, 85]]
3단계: 예측 (predict)
pred = model.predict([[4]])
학습된 규칙($y = 10x + 0$)을 새로운 데이터에 적용합니다.
- 입력
[[4]]에 대해 $10 \times 4 + 0 = 40$을 계산 - 역시 2차원 배열로 입력해야 합니다
# 하나만 예측
model.predict([[4]]) # 결과: [40.]
# 여러 개 동시 예측
model.predict([[4], [5]]) # 결과: [40., 50.]
전체 흐름 요약
[데이터 준비]
X = [[1], [2], [3]] ← 문제지
y = [10, 20, 30] ← 해답지
↓
[1. 모델 생성]
model = LinearRegression() ← 빈 학생
↓
[2. 학습 (fit)]
model.fit(X, y) ← 문제 풀며 공부
↓
[3. 예측 (predict)]
model.predict([[4]]) ← 새 문제에 답하기 → 40
학습 결과 확인하기
# 모델이 찾아낸 가중치(기울기)
print(f"가중치(w): {model.coef_[0]}") # 10.0
# 모델이 찾아낸 편향(y절편)
print(f"편향(b): {model.intercept_}") # 0.0
- coef_: coefficient(계수)의 약자. 각 특성의 가중치 배열
- intercept_: y절편(편향) 값
- 속성 뒤의 언더바(_)는 Scikit-learn의 관례로, "학습을 통해 얻어진 값"임을 표시합니다
핵심 정리
| 메서드 | 역할 | 비유 |
|---|---|---|
| LinearRegression() | 알고리즘 선택 | 학생 배정 |
| fit(X, y) | 데이터로 학습 | 문제집으로 공부 |
| predict(X_new) | 새 데이터 예측 | 시험 보기 |
| coef_ | 학습된 가중치 | 공부해서 얻은 지식 |
| intercept_ | 학습된 편향 | 기본 상식 |
이 생성 → 학습 → 예측 패턴은 Scikit-learn의 모든 모델에서 동일하게 적용됩니다.
선형 회귀를 마스터하면 다른 알고리즘도 같은 방식으로 사용할 수 있습니다.