머신러닝의 이해

PYTHON MACHINE LEARNING
Chapter 1. 머신러닝 이해
머신러닝의 기본 개념부터 첫 번째 예측 모델까지
Python과 scikit-learn으로 직접 실습해 봅니다.
컴퓨터 프로그래밍과 머신러닝 개발 환경
데이터를 이용해 규칙을 학습하는 머신러닝을 시작해 봅니다.
📚 이번 장에서 배울 내용
1.1 머신러닝이란?

머신러닝(Machine Learning)은 컴퓨터가 데이터를 이용하여 규칙을 학습하고, 학습한 규칙을 이용해 새로운 데이터의 결과를 예측하는 기술입니다.

일반적인 프로그램에서는 사람이 규칙을 직접 작성합니다.

Python
score = 80

if score >= 60:
    print("합격")
else:
    print("불합격")
실행 결과
합격

이 프로그램에서 60점 이상이면 합격이라는 규칙은 사람이 직접 만들었습니다.

데이터 + 사람이 만든 규칙 → 프로그램 → 결과

머신러닝은 다릅니다. 사람이 모든 규칙을 직접 작성하는 대신 컴퓨터에게 여러 데이터를 제공하고, 컴퓨터가 데이터에서 규칙을 찾도록 합니다.

학습 데이터 → 머신러닝 → 규칙 학습 → 모델 → 새로운 데이터 → 예측
💡 학습과 모델

데이터로부터 규칙을 찾아가는 과정을 학습(Training)이라고 합니다.

학습을 통해 만들어진 결과물을 모델(Model)이라고 합니다.

1.2 머신러닝으로 무엇을 할 수 있을까?

머신러닝은 데이터를 바탕으로 다양한 결과를 예측하거나 분류하는 데 사용할 수 있습니다.

입력 데이터머신러닝이 예측하는 것
아파트 면적, 위치, 층수아파트 가격
공부 시간시험 점수
고객의 구매 기록상품 구매 가능성
이메일 내용스팸 여부
환자의 검사 데이터질병 가능성
꽃의 크기꽃의 종류
💡 머신러닝에서 가장 중요한 재료

머신러닝 프로그램에서는 데이터가 매우 중요합니다. 좋은 데이터를 충분히 제공해야 좋은 모델을 만들 가능성이 높아집니다.

1.3 실습 환경 준비

이 장의 실습은 다음 환경을 기준으로 진행합니다.

  • Python
  • VS Code
  • scikit-learn
  • NumPy
  • Pandas
  • Matplotlib

먼저 실습 파일을 저장할 폴더를 만듭니다.

실습 폴더
python_machine_learning

VS Code에서 File → Open Folder → python_machine_learning 순서로 폴더를 엽니다.

1.4 가상환경 만들기

VS Code에서 Terminal → New Terminal을 선택한 후 다음 명령을 실행합니다.

Terminal
python -m venv .venv

Windows에서는 다음 명령으로 가상환경을 활성화합니다.

Windows
.venv\Scripts\activate
정상적으로 활성화된 경우
(.venv)
💡 가상환경을 사용하는 이유

프로젝트에서 사용하는 Python 라이브러리를 다른 프로젝트와 분리하여 관리할 수 있습니다.

1.5 머신러닝 라이브러리 설치
Terminal
pip install scikit-learn pandas numpy matplotlib

01_test.py 파일을 만들고 설치 여부를 확인합니다.

01_test.py
import sklearn

print("scikit-learn 버전:", sklearn.__version__)
Terminal
python 01_test.py

버전 번호가 출력되면 정상적으로 설치된 것입니다.

1.6 첫 번째 머신러닝

다음과 같은 공부 시간과 시험 점수 데이터가 있다고 가정해 봅시다.

공부 시간시험 점수
1시간50점
2시간60점
3시간70점
4시간80점
5시간90점
🤔 6시간 공부하면 몇 점을 받을까?

사람은 데이터의 규칙을 보고 약 100점이라고 예상할 수 있습니다. 이번에는 컴퓨터가 데이터를 직접 학습하고 예측하도록 만들어 봅니다.

노트북을 이용한 데이터 분석과 머신러닝 학습
머신러닝에서는 데이터를 학습한 모델을 이용해 새로운 값을 예측합니다.
1.7 첫 번째 예측 프로그램
02_first_ml.py
from sklearn.linear_model import LinearRegression

# 공부 시간
X = [[1], [2], [3], [4], [5]]

# 시험 점수
y = [50, 60, 70, 80, 90]

# 머신러닝 모델 생성
model = LinearRegression()

# 데이터 학습
model.fit(X, y)

# 6시간 공부했을 때 점수 예측
result = model.predict([[6]])

print("예측 점수:", result[0])
Terminal
python 02_first_ml.py
실행 결과
예측 점수: 100.0

프로그램에 6시간이면 100점이라는 규칙을 직접 작성하지 않았는데도 기존 데이터를 이용하여 새로운 결과를 예측했습니다.

1.8 코드를 한 줄씩 이해하기
① LinearRegression 가져오기
Python
from sklearn.linear_model import LinearRegression

sklearn은 Python의 머신러닝 라이브러리인 scikit-learn의 패키지 이름입니다.

LinearRegression은 데이터 사이의 관계를 직선 형태로 학습하는 모델입니다.

초보자는 이렇게 이해하세요

LinearRegression → 숫자 사이의 관계를 학습하여 새로운 숫자를 예측하는 머신러닝 모델

1.9 학습 데이터 만들기
Python
X = [[1], [2], [3], [4], [5]]
y = [50, 60, 70, 80, 90]
1 → 50    2 → 60    3 → 70
4 → 80    5 → 90

머신러닝에서는 보통 입력 데이터를 X, 결과 데이터를 y라고 표현합니다.

1.10 모델이란?
Python
model = LinearRegression()

model은 변수 이름이므로 다른 이름을 사용할 수도 있습니다.

Python
ml = LinearRegression()

score_model = LinearRegression()

머신러닝에서는 관례적으로 model이라는 이름을 많이 사용합니다.

모델(Model)이란?

데이터를 학습하여 규칙을 가지고 있는 객체라고 이해하면 쉽습니다.

1.11 fit()으로 학습하기
Python
model.fit(X, y)

fit()은 데이터를 이용하여 모델을 학습시키는 함수입니다.

X = 공부 시간 + y = 시험 점수

model.fit(X, y)

공부 시간과 시험 점수의 관계 학습
📌 꼭 기억하기

fit → 학습

1.12 predict()로 예측하기
Python
result = model.predict([[6]])

predict는 '예측한다'는 뜻입니다.

[[6]] → 학습된 model → predict() → 예측 점수
📌 머신러닝 핵심 함수

model.fit(X, y) → 학습

model.predict(new_data) → 예측

1.13 여러 값을 예측해 보기
03_predict.py
from sklearn.linear_model import LinearRegression

X = [[1], [2], [3], [4], [5]]
y = [50, 60, 70, 80, 90]

model = LinearRegression()
model.fit(X, y)

result = model.predict([[6], [7], [8]])

print(result)
실행 결과
[100. 110. 120.]
⚠ 머신러닝 결과를 그대로 믿으면 안 되는 이유

110점과 120점은 일반적인 시험 점수로는 현실적이지 않습니다.

머신러닝은 학습한 데이터의 관계를 이용하여 계산할 뿐 현실 세계의 모든 조건을 자동으로 이해하는 것은 아닙니다.

따라서 데이터와 결과가 현실적으로 타당한지 사람이 판단해야 합니다.

1.14 데이터가 달라지면 결과도 달라진다
04_change_data.py
from sklearn.linear_model import LinearRegression

X = [[1], [2], [3], [4], [5]]
y = [45, 55, 68, 72, 85]

model = LinearRegression()
model.fit(X, y)

result = model.predict([[6]])

print("6시간 공부 예상 점수:", result[0])
데이터가 달라짐 → 학습 결과가 달라짐 → 모델이 달라짐 → 예측 결과도 달라짐

머신러닝에서는 알고리즘뿐만 아니라 어떤 데이터를 이용하여 학습했는가도 매우 중요합니다.

1.15 그래프로 데이터 확인하기

숫자만 보는 것보다 그래프를 이용하면 데이터의 관계를 훨씬 쉽게 확인할 수 있습니다.

05_graph.py
import matplotlib.pyplot as plt

X = [1, 2, 3, 4, 5]
y = [50, 60, 70, 80, 90]

plt.scatter(X, y)

plt.xlabel("Study Time")
plt.ylabel("Score")
plt.title("Study Time and Score")

plt.show()

scatter()는 데이터를 점으로 표시하는 함수입니다.

Python
plt.scatter(X, y)
💡 데이터 시각화

머신러닝에서는 모델을 만들기 전에 데이터를 그래프로 확인하는 작업도 매우 중요합니다.

1.16 머신러닝 결과까지 그래프로 표시하기
06_ml_graph.py
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

X = [[1], [2], [3], [4], [5]]
y = [50, 60, 70, 80, 90]

model = LinearRegression()
model.fit(X, y)

prediction = model.predict(X)

plt.scatter([1, 2, 3, 4, 5], y)
plt.plot([1, 2, 3, 4, 5], prediction)

plt.xlabel("Study Time")
plt.ylabel("Score")
plt.title("Machine Learning")

plt.show()
그래프 읽는 방법

점 → 실제 데이터

선 → 머신러닝 모델이 학습한 관계

1.17 머신러닝의 전체 과정
① 데이터 준비 → ② 모델 선택 → ③ 모델 생성
→ ④ 데이터 학습 → ⑤ 새로운 데이터 입력 → ⑥ 결과 예측
머신러닝 기본 구조
# 1. 데이터 준비
X = [[1], [2], [3], [4], [5]]
y = [50, 60, 70, 80, 90]

# 2~3. 모델 선택 및 생성
model = LinearRegression()

# 4. 학습
model.fit(X, y)

# 5~6. 새로운 데이터 예측
result = model.predict([[6]])

이 구조는 앞으로 배우게 될 대부분의 머신러닝 프로그램에서도 반복됩니다.

1.18 지도학습이란?

지금까지 사용한 데이터에는 공부 시간과 함께 시험 점수라는 정답이 들어 있었습니다.

1시간 → 50점
2시간 → 60점
3시간 → 70점

이처럼 정답이 있는 데이터를 이용하여 학습하는 방법을 지도학습(Supervised Learning)이라고 합니다.

지도학습
├─ 회귀(Regression)
└─ 분류(Classification)
1.19 회귀

회귀(Regression)는 숫자를 예측하는 문제입니다.

  • 공부 시간 → 시험 점수 예측
  • 아파트 면적 → 아파트 가격 예측
  • 광고비 → 매출 예측
1.20 분류

분류(Classification)는 데이터가 어떤 종류에 속하는지를 예측합니다.

  • 이메일 → 정상 / 스팸
  • 사진 → 고양이 / 강아지
  • 고객 → 구매 / 구매하지 않음
07_classification.py
from sklearn.tree import DecisionTreeClassifier

X = [[1], [2], [3], [4], [5], [6]]

y = [
    "불합격", "불합격", "불합격",
    "합격", "합격", "합격"
]

model = DecisionTreeClassifier()
model.fit(X, y)

result = model.predict([[5]])

print("예측 결과:", result[0])
실행 결과
예측 결과: 합격
1.21 회귀와 분류 비교
구분회귀분류
목적숫자 예측종류 예측
결과 예85.3합격
집값 예측스팸 판별
매출 예측질병 여부
온도 예측고객 이탈 여부
💡 어떻게 구분할까?

내일 매출은 얼마일까? → 숫자를 예측하므로 회귀

이 고객은 상품을 구매할까? → 구매/미구매를 예측하므로 분류

1.22 비지도학습

비지도학습(Unsupervised Learning)은 정답이 없는 데이터를 이용하여 데이터 내부의 특징이나 그룹을 찾는 방법입니다.

쇼핑몰 고객 데이터 예

고객 A → 구매금액 100만원 / 방문 30회

고객 B → 구매금액 10만원 / 방문 5회

고객 C → 구매금액 120만원 / 방문 35회

고객 D → 구매금액 15만원 / 방문 7회

VIP와 일반 고객이라는 정답을 미리 제공하지 않아도 비슷한 고객끼리 그룹으로 나눌 수 있습니다.

고객 데이터 → 머신러닝 → 비슷한 데이터 찾기

그룹 1 / 그룹 2 / 그룹 3

이러한 방법을 군집화(Clustering)라고 합니다.

1.23 강화학습

강화학습(Reinforcement Learning)은 컴퓨터가 행동하고 그 결과에 따라 보상 또는 불이익을 받으면서 더 좋은 행동을 학습하는 방법입니다.

AI 행동 → 게임 진행 → 결과 확인
좋은 결과 → 보상
나쁜 결과 → 불이익

더 좋은 행동 학습

강화학습은 게임, 로봇 제어, 자율주행 등의 분야에서 활용됩니다.

1.24 머신러닝의 세 가지 종류
종류특징
지도학습정답이 있음점수 예측, 스팸 판별
비지도학습정답이 없음고객 그룹 분석
강화학습보상을 이용게임 AI, 로봇
1.25 직접 만들어 보는 머신러닝 실습
실습 1. 키로 몸무게 예측하기
08_height_weight.py
from sklearn.linear_model import LinearRegression

# 키
X = [[150], [155], [160], [165], [170], [175], [180]]

# 몸무게
y = [48, 52, 55, 60, 65, 70, 75]

model = LinearRegression()
model.fit(X, y)

height = 168

result = model.predict([[height]])

print("키:", height)
print("예상 몸무게:", result[0])

height 값을 172, 185 등으로 변경하면서 예측 결과가 어떻게 달라지는지 확인해 보세요.

⚠ 실습 데이터 안내

이 예제는 머신러닝의 원리를 익히기 위한 단순한 실습 데이터이며 실제 사람의 적정 몸무게를 판단하는 모델은 아닙니다.

1.26 광고비로 매출 예측하기
09_sales.py
from sklearn.linear_model import LinearRegression

# 광고비(만원)
X = [[10], [20], [30], [40], [50]]

# 매출(만원)
y = [100, 180, 260, 350, 430]

model = LinearRegression()
model.fit(X, y)

ad = 60

result = model.predict([[ad]])

print("광고비:", ad, "만원")
print("예상 매출:", result[0], "만원")

ad = 70, ad = 100 등으로 변경하면서 예측 결과를 비교해 봅니다.

1.27 직접 입력받아 예측하기
10_input_predict.py
from sklearn.linear_model import LinearRegression

X = [[10], [20], [30], [40], [50]]
y = [100, 180, 260, 350, 430]

model = LinearRegression()
model.fit(X, y)

ad = int(input("광고비를 입력하세요(만원): "))

result = model.predict([[ad]])

print("예상 매출:", result[0], "만원")
실행 예
광고비를 입력하세요(만원): 60
예상 매출: ...
1.28 머신러닝 프로그램의 핵심 코드
머신러닝 핵심 구조
# 데이터
X = ...
y = ...

# 모델 생성
model = ...

# 학습
model.fit(X, y)

# 예측
result = model.predict(...)

# 결과
print(result)

알고리즘이 변경되어도 기본적인 사용 흐름은 비슷합니다.

회귀와 분류 모델
# 회귀
model = LinearRegression()

# 분류
model = DecisionTreeClassifier()
💡 처음부터 수학 공식을 외울 필요는 없습니다

처음에는 다양한 데이터를 직접 넣고 모델을 학습한 뒤 예측 결과를 확인하면서 머신러닝의 동작 방식을 이해하는 것이 중요합니다.

1.29 실습문제
실습 1. 운동 일수로 체중 감소량 예측하기

다음 데이터를 이용하여 6일 동안 운동했을 때 체중 감소량을 예측하는 프로그램을 작성해 보세요.

운동 일수체중 감소량
10.2
20.5
30.7
41.0
51.3

LinearRegression을 사용합니다.

실습 2. 시험 점수 예측하기

다음 데이터를 이용하여 7시간 공부한 학생의 시험 점수를 예측해 보세요.

학습 데이터
X = [[1], [2], [3], [4], [5], [6]]
y = [45, 52, 61, 68, 78, 85]
실습 3. 사용자가 공부 시간 입력하기

실습 2의 프로그램을 수정하여 사용자가 공부 시간을 직접 입력할 수 있도록 만들어 보세요.

실행 예
공부 시간을 입력하세요: 7
예상 시험 점수: 93.2

실제 출력되는 값은 학습 결과에 따라 달라질 수 있습니다.

실습 4. 합격/불합격 분류하기
학습 데이터
X = [[1], [2], [3], [4], [5], [6]]

y = [
    "불합격", "불합격", "불합격",
    "합격", "합격", "합격"
]

사용자가 공부 시간을 입력하면 합격 또는 불합격을 예측하도록 프로그램을 작성해 보세요.

📌 Chapter 1 핵심 정리
  • 머신러닝은 데이터를 이용하여 규칙을 학습하고 새로운 데이터의 결과를 예측한다.
  • 데이터로부터 규칙을 찾는 과정을 학습(Training)이라고 한다.
  • 학습을 통해 만들어진 결과물을 모델(Model)이라고 한다.
  • model.fit(X, y)는 데이터를 이용하여 모델을 학습한다.
  • model.predict(new_data)는 학습된 모델을 이용하여 새로운 결과를 예측한다.
  • 지도학습에는 회귀와 분류가 있다.
  • 회귀는 숫자를 예측하고 분류는 데이터의 종류를 예측한다.
  • 비지도학습은 정답 없이 데이터의 특징이나 그룹을 찾는다.
  • 강화학습은 행동의 결과에 따른 보상을 이용하여 학습한다.
  • 머신러닝에서는 알고리즘뿐 아니라 학습에 사용하는 데이터가 매우 중요하다.
데이터 준비 → 모델 생성 → fit() → 학습 → predict() → 예측

프로그램·홈페이지·강의가 필요하신가요?

프로그램 판매, 무료 다운로드, 홈페이지 제작, IT 강의 상담을 도와드립니다.

상담 신청하기