<빅데이터분석> NumPy, 머신러닝, 신경망 요약 정리

정지인·2025년 6월 9일

NumPy, 머신러닝, 신경망 요약 정리

NumPy 기초

배열 생성과 속성

import numpy as np
print(np.__version__)

# 배열 생성 및 속성 확인
a = np.arange(12).reshape(3,4)
print(a, a.shape)
print(a.dtype)   # 데이터 타입
print(a.ndim)    # 차원 수
print(a.T)       # 전치
print(a.size)    # 전체 원소 개수
print(a.nbytes)  # 바이트 크기

a.flat = 1       # 모든 요소를 1로 설정
print(a)

배열 변환

mylist2 = [1,2,3,4]
mynpa2 = np.array(mylist2)

차원 이해

  • 1차원: [1, 2, 3]
  • 2차원: [[1, 2], [3, 4]]
  • 3차원: [[[1]]]
  • 차원 수는 ndim, 모양은 shape로 확인

브로드캐스팅 조건

  1. 배열 모양이 같거나
  2. 한 배열의 차원이 1

벡터 연산

스칼라 곱

A = [0,1,2,3,4,5]
scalar_multiply = list(map(lambda x: x*2, A))

평균 계산 예시

Hong1 = [80, 90]
Jung1 = [70, 80]
a = 0.5
avg = [a * sum(i) for i in zip(Hong1, Jung1)]

NumPy 활용

npHong1 = np.array(Hong1)
npJung1 = np.array(Jung1)
np_S = npHong1 + npJung1
a * np_S

내적 (dot product)

np.dot(avg1, W1)

벡터의 길이

from numpy.linalg import norm
norm(v)

오차 지표

  • MAE: np.mean(np.abs(y_pred - y_true))
  • MSE: np.mean((y_pred - y_true)**2)
  • RMSE: np.sqrt(MSE)

신경망 이론

시그모이드 함수

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

순전파 예시

out = sigmoid(np.dot(input, weight) + bias)

역전파 계산

new_w = old_w - lr * delta * input
new_b = old_b - lr * delta

delta2 = -(t - y2)(1 - y2)y2
delta1 = y1(1 - y1) * w2 * delta2

사이킷런 구현

from sklearn.neural_network import MLPClassifier

머신러닝

지도/비지도 학습

  • 지도: 라벨 있음 (분류/회귀)
  • 비지도: 라벨 없음 (군집화, 차원 축소)

모델 비교 예시

ModelTrainTest
Random Forest87.869.58
Decision Tree87.869.58
KNN84.068.61
SVM80.378.64
Logistic Regression80.379.61
Perceptron79.581.23
Naive Bayes77.875.40
SGD75.180.58
  • 과적합 모델: Random Forest, Decision Tree
  • 일반화 잘된 모델: Perceptron, SGD

차원 축소

PCA 예시

from sklearn.decomposition import PCA
pca = PCA(n_components=2)
pca.fit_transform(data)

표준화

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
data_scaled = scaler.fit_transform(data)

군집화 (KMeans)

from sklearn.cluster import KMeans
model = KMeans(n_clusters=3, random_state=123)
model.fit(data_scaled)
model.cluster_centers_
model.labels_
model.inertia_

교차검증

from sklearn.model_selection import KFold, LeaveOneOut, cross_val_score
  • KFold, LeaveOneOut, StratifiedKFold 제공

회귀 분석 (선형회귀)

SSE (제곱 오차 합)

sse = np.sum((y_true - y_pred) ** 2)

SST (총 제곱합)

sst = np.sum((y_true - np.mean(y_true)) ** 2)

결정계수 R^2

r2 = 1 - sse/sst

예측력: RMSE

rmse = np.sqrt(np.mean((y_pred - y_true)**2))

경사하강법 회귀계수 갱신

coef[0] -= lr * error     # 절편
coef[1:] -= lr * error * x # 가중치

상관계수

np.corrcoef(x, y)

NumPy, 머신러닝, 신경망 요약 정리 (시험 대비)

📌 시험 구성 안내 (총 40문항 / 50점)

  • 프로그래밍 실습형: 11문항 (11점)
  • 프로그래밍 설명형: 19문항 (19점)
  • 프로그래밍 기타형: 4문항 (6점)
  • 이론 설명형: 10문항 (14점)

💻 프로그래밍 실습형 대비 (11문항)

배열 생성 및 속성 확인

import numpy as np

a = np.arange(12).reshape(3, 4)
a.dtype, a.ndim, a.shape, a.size, a.nbytes
a.T        # 전치

리스트 → 배열 변환

mylist = [1, 2, 3]
np.array(mylist)

브로드캐스팅 연산

a = np.array([1, 2, 3])
b = 2
a + b  # [3, 4, 5]

평균 계산

Hong1 = [80, 90]
Jung1 = [70, 80]
avg = [0.5 * sum(i) for i in zip(Hong1, Jung1)]

스칼라 곱 / 내적

A = np.array([1, 2, 3])
B = np.array([4, 5, 6])
np.dot(A, B)

벡터 길이

from numpy.linalg import norm
norm([3, 4])  # 5.0

시그모이드 함수

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

PCA 차원 축소

from sklearn.decomposition import PCA
pca = PCA(n_components=2)
X_2d = pca.fit_transform(X)

군집화

from sklearn.cluster import KMeans
model = KMeans(n_clusters=3)
model.fit(X)
model.labels_

표준화

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

회귀 예측값

def predict(X, coef):
    return coef[0] + coef[1] * X

📚 프로그래밍 설명형 대비 (19문항)

배열 속성 의미

  • dtype: 데이터형
  • ndim: 차원 수
  • shape: 구조
  • T: 전치
  • size: 전체 원소 수
  • nbytes: 총 메모리 크기

브로드캐스팅 조건

  1. 배열 모양이 같거나
  2. 한 배열의 차원이 1

순전파(Feedforward)

  • 입력층 → 은닉층 → 출력층
  • 각 노드: w*x + b, 시그모이드 활성화 적용

역전파 핵심 흐름

출력층 delta2 = -(t - y2)(1 - y2)y2
은닉층 delta1 = y1(1 - y1) * w2 * delta2

MAE / MSE / RMSE

  • MAE: mean(abs(y - pred))
  • MSE: mean((y - pred)^2)
  • RMSE: sqrt(MSE)

R² (결정계수)

sse = np.sum((y_true - y_pred)**2)
sst = np.sum((y_true - np.mean(y_true))**2)
r2 = 1 - sse / sst

상관계수

np.corrcoef(x, y)

Gradient Descent

  • 비용 함수(SSE)를 최소화
  • 절편 coef[0], 기울기 coef[1] 조정

교차검증 종류

  • K-Fold
  • Leave-One-Out
  • Stratified K-Fold

경사하강법 예시

coef[0] -= lr * error
coef[1] -= lr * error * x

🧾 기타형 프로그래밍 + 분석 (4문항)

차원 축소 과정

  1. 표준화
  2. PCA 적용
  3. 시각화용 2차원 변환

KMeans 군집 평가

  • model.labels_: 각 데이터 군집 번호
  • model.inertia_: 거리 총합 (작을수록 좋음)

R² 및 예측력 평가

from sklearn.metrics import r2_score, mean_squared_error
r2_score(y, pred)
np.sqrt(mean_squared_error(y, pred))  # RMSE

예측 함수

def predict(x, coef):
    return coef[0] + coef[1] * x

📘 이론 설명형 대비 (10문항)

지도 vs 비지도 학습

  • 지도: 정답 있음 (분류, 회귀)
  • 비지도: 정답 없음 (군집화, 차원 축소)

군집화란?

  • 데이터의 유사도 기반으로 그룹핑
  • 대표적 방법: KMeans (유클리디안 거리 사용)

회귀 분석 요소

  • SSE: 오차 제곱합
  • SST: 총 변동량
  • SSR: 설명 가능한 변동량

회귀계수 의미

  • 독립변수가 1 증가할 때 종속변수가 얼마나 변화하는지
  • 회귀선: y = β₀ + β₁x

상관계수 의미

  • -1~1 사이 값
  • 0에 가까우면 무상관, 1/–1에 가까우면 강한 상관

시그모이드 vs 항등 함수

  • 시그모이드: 0~1 값으로 압축
  • 항등함수: 출력층에서 그대로 값 전달

벡터와 행렬의 의미

  • 벡터: 방향 + 크기 가진 선형 자료구조
  • 행렬: 여러 벡터 모음, 2차원

머신러닝 주요 유형

  • 분류: 이산값 예측
  • 회귀: 연속값 예측
  • 군집화: 유사도 기반 그룹화
  • 차원 축소: 정보 손실 최소화하며 변수 축소

데이터 표준화 필요성

  • 변수 간 스케일이 다르면 학습에 악영향
  • StandardScaler, MinMaxScaler 사용

학습률과 에포크

  • 학습률: 가중치 갱신 크기
  • 에포크: 전체 학습 반복 횟수
profile
멋쟁이사자 13기 백엔드

0개의 댓글