본문 바로가기
개발/Python

Python_ 머신러닝...

by JunsC 2025. 2. 28.
728x90

머신러닝.. 아주 어렵고도 심오한 내용이다. 현재 AI 시대를 건너고 있다. 이제 점점 더 활성화가 될 것이다. 그 부분에서 우리는 뒤쳐지지 말고 갭을 줄이기 위해 항상 배워두어야 하는데 그 기초가 되는게 머신러닝 / 딥러닝 인 듯 하다. 

그래서 Python 으로 머신러닝 및 딥러닝 관련하여 한번 공부를 해보고자 한다.

 

우선 예시를 하나 들겠다.

선형회귀를 통한 숫자 예측 코드인데 이 부분을 먼저 작성 후 상세히 살펴보자

 

선형회귀
모델을 사용하여 숫자 패턴을 예측하는 방법


📌 예제: 숫자 시퀀스 예측

데이터:

  • 입력값(X): [1, 2, 3, 4, 5]
  • 출력값(y): [2, 4, 6, 8, 10] (각 X 값의 2배)
  • 목표: X=6일 때 y 값 예측

📌 파이썬 코드 (Linear Regression 사용)

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# 1. 데이터 준비 (입력 X, 출력 y)
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)  # 2D 배열 변환
y = np.array([2, 4, 6, 8, 10])  # 출력값

# 2. 모델 생성 및 학습
model = LinearRegression()
model.fit(X, y)

# 3. 예측 수행
X_test = np.array([[6]])  # 새로운 입력값 6
y_pred = model.predict(X_test)  # 예측

# 4. 결과 출력
print(f"X=6일 때 예측된 y 값: {y_pred[0]}")

# 5. 시각화 (데이터 + 예측값)
plt.scatter(X, y, color="blue", label="Actual Data")
plt.plot(X, model.predict(X), color="red", linestyle="--", label="Prediction Line")
plt.scatter(X_test, y_pred, color="green", marker="*", s=200, label="Predicted Value")
plt.xlabel("Input X")
plt.ylabel("Output y")
plt.legend()
plt.show()

 


 

📌 실행 결과

 

X=6일 때 예측된 y 값: 12.0

 

그래프에는 데이터 점(파란색), 예측선(빨간 점선), 예측값(초록 별)이 표시됩니다.


📌 설명

  1. 데이터 준비: 숫자 패턴 (X = 1, 2, 3, 4, 5, y = 2, 4, 6, 8, 10)
  2. 모델 학습: 선형 회귀 모델을 훈련
  3. 예측: X=6일 때의 값을 예측 (y=12)
  4. 시각화: 학습된 모델을 그래프로 표시하여 예측값을 확인

 

좀 더 세부적으로 알아보자

 

 

🔹 머신러닝 (Machine Learning, ML)

💡 정의: 데이터에서 패턴을 학습해서 새로운 데이터를 예측하는 기술.

  • 사람이 직접 "이렇게 하라"라고 코딩하는 게 아니라, 알고리즘이 데이터에서 규칙을 찾는 방식이야.
  • 예를 들어, "키와 몸무게 데이터를 보고 적정 몸무게 예측" 같은 거.

머신러닝의 주요 알고리즘

  1. 지도학습 (Supervised Learning) → 정답(라벨)이 있는 데이터를 학습
    • 예제: 키와 몸무게 데이터(X)를 주고, 비만 여부(Y)를 예측
    • 알고리즘:
      • 선형 회귀 (Linear Regression) → 숫자 예측
      • 의사결정나무 (Decision Tree) → 분류 문제 해결
      • 랜덤 포레스트 (Random Forest) → 앙상블 기법으로 예측 성능 개선
      • SVM (Support Vector Machine) → 복잡한 데이터 분류
  2. 비지도학습 (Unsupervised Learning) → 정답 없이 패턴을 찾음
    • 예제: 고객 데이터를 군집으로 묶어서 유형 분석
    • 알고리즘:
      • K-평균 (K-Means Clustering) → 비슷한 데이터끼리 그룹화
      • PCA (Principal Component Analysis) → 차원 축소
  3. 강화학습 (Reinforcement Learning) → 보상을 최대로 하도록 학습
    • 예제: 바둑 AI, 자율주행, 게임 플레이 AI
    • 대표 알고리즘: Q-Learning, DQN

🔹 딥러닝 (Deep Learning, DL)

💡 정의: 머신러닝보다 더 강력한 학습 능력을 가진 인공신경망(ANN, Artificial Neural Network) 기반 기술.

  • 딥러닝은 머신러닝의 하위 개념이야.
  • 이미지, 음성, 텍스트 같은 복잡한 데이터를 더 잘 처리할 수 있어.
  • 사람 뇌의 뉴런 구조를 모방한 다층 신경망 (Deep Neural Network, DNN) 을 사용해.

딥러닝의 주요 알고리즘

  1. CNN (Convolutional Neural Network)
    • 이미지 인식, 얼굴 인식, 객체 탐지 등에 사용
    • 예제: 자율주행차가 신호등과 보행자를 인식
    • 라이브러리: TensorFlow, PyTorch
  2. RNN (Recurrent Neural Network) & LSTM (Long Short-Term Memory)
    • 순차적 데이터 (시계열, 자연어 처리) 분석에 특화
    • 예제: 날씨 예측, 주가 예측, 챗봇
    • 라이브러리: TensorFlow, Keras
  3. GAN (Generative Adversarial Networks)
    • 가짜 이미지를 만들어 내는 기술 (딥페이크, AI 그림 생성)
    • 예제: 미술작품을 자동 생성하는 AI

🔹 머신러닝 vs 딥러닝 차이점

비교 항목머신러닝 (ML)딥러닝 (DL)

학습 방식 특징을 사람이 직접 설계 특징을 스스로 학습
데이터 요구량 적은 데이터도 가능 방대한 데이터 필요
연산 속도 비교적 빠름 연산이 복잡해서 느림
주요 라이브러리 scikit-learn TensorFlow, PyTorch

🔹 파이썬으로 머신러닝/딥러닝 하기

💻 필요한 라이브러리

pip install numpy pandas scikit-learn matplotlib tensorflow keras torch

 

 

📌 머신러닝 예제 (선형 회귀)

 
import numpy as np
from sklearn.linear_model import LinearRegression

X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
y = np.array([2, 4, 6, 8, 10])

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

print("X=6의 예측값:", model.predict([[6]])[0])  # 결과: 12.0

 

 

📌 딥러닝 예제 (신경망 만들기 - Keras)

import tensorflow as tf
from tensorflow import keras
import numpy as np

# 간단한 신경망 모델 만들기
model = keras.Sequential([
    keras.layers.Dense(8, activation='relu', input_shape=(1,)), 
    keras.layers.Dense(1)
])

model.compile(optimizer='adam', loss='mse')

# 데이터 준비
X = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10])

# 모델 학습
model.fit(X, y, epochs=100, verbose=0)

# 예측
print("X=6 예측값:", model.predict([6])[0][0])  # 결과 약 12
 
 

 

🔹 마무리

  • 머신러닝은 데이터에서 규칙을 찾고 예측하는 기술이고, 딥러닝은 더 복잡한 문제를 해결하는 인공 신경망 기반 기술이야.
  • 간단한 패턴 예측은 머신러닝(Scikit-learn)으로 해결하고, 복잡한 이미지/텍스트 분석은 딥러닝(TensorFlow/PyTorch)을 사용하면 돼.

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."