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
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
벡터 연산
스칼라 곱
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
머신러닝
지도/비지도 학습
- 지도: 라벨 있음 (분류/회귀)
- 비지도: 라벨 없음 (군집화, 차원 축소)
모델 비교 예시
| Model | Train | Test |
|---|
| Random Forest | 87.8 | 69.58 |
| Decision Tree | 87.8 | 69.58 |
| KNN | 84.0 | 68.61 |
| SVM | 80.3 | 78.64 |
| Logistic Regression | 80.3 | 79.61 |
| Perceptron | 79.5 | 81.23 |
| Naive Bayes | 77.8 | 75.40 |
| SGD | 75.1 | 80.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
평균 계산
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])
시그모이드 함수
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
순전파(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문항)
차원 축소 과정
- 표준화
- PCA 적용
- 시각화용 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))
예측 함수
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 사용
학습률과 에포크
- 학습률: 가중치 갱신 크기
- 에포크: 전체 학습 반복 횟수