08.03 디지털 트윈 부트캠프(OT) 24일차
파이썬
머신러닝
원래의 프로그래밍이 Rule과 Data를 통해 Answer를 출력했다면,
머신러닝은 Answer와 Data를 통해 Rule을 출력해낸다.
- 지도 학습
문제와 정답을 모두 알려주고 공부시키는 방법 -> 예측, 분류
- 분류: 데이터를 서로 다른 그룹으로 분류
- 회귀(예측): 연속적인 데이터의 추세를 예측 y = ax + b
- 선형회귀: 가설 H(x) = Wx + b
from sklearn.linear_model import LinearRegression
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
- 비지도 학습
답을 가르쳐주지 않고 공부시키는 방법 -> 연관 규칙, 군집- 클러스터링(그룹화)
- 강화 학습
보상을 통해 상은 최대화, 벌은 최소화하는 방향으로 행위를 강화하는 학습 -> 보상
MSE(Mean Square Error), 비용 함수, 과적합(Overfitting), 정규화(Noramlization)
ML 모델 개발 순서
데이터 읽기 -> 데이터 확인 -> 전처리 -> 분할 -> 알고리즘 선택 -> 학습 -> 예측 -> 모델평가 -> 튜닝
데이터 분할: Original Set / Training, Testing / Training, Validataion, Testing
X_train, X_test, y_train, y_test =
train_test_split(data, digits.target, test_size = 0.2, random_state = 1)
지도학습 알고리즘
k-Nearest Neighbors (k-NN)
거리기반 분류분석 모델
새로운 데이터를 거리가 가장 가까운 k개의 데이터 레이블로 분류
로지스틱 회귀
샘플이 특정 클래스에 속할 확률을 추정
거리측정 방법
유클리드 거리: d(A, B) = √((x₂ - x₁)² + (y₂ - y₁)²)
맨해튼 거리: d(A, B) = |x₁ - x₂| + |y₁ - y₂|
: 최단거리 빼고 나머지 블럭으로 가는 거리는 모두 똑같다.
import numpy as np
from sklearn.datesets import load_iris
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
iris = load_iris()
knn = KNeighborsClassifier(n_neighbors = 3)
X_train, X_test, Y_train, Y_test = train_test_split(iris['data'], iris['target'], test_size = 0.25, stratify = iris['target'])
Y_train
knn.fit(X_train, Y_train)
y_pred = knn.predict(X_test)
print("prediction accuracy: {:.2f}".format(np.mean(y_pred == Y_test)))
의사 결정 나무
클러스터링: 군집화
k-평균(k-Means)
1. K개의 임의의 중심점(centroid) 배치
2. 각 데이터들을 가장 가까운 중심점으로 할당(군집 형성)
3. 군집으로 지정된 데이터들을 기반으로 군집 중심점 업데이트
4. 2번, 3번을 수렴이 될 때까지, 즉, 더이상 중심점이 업데이트 되지 않을 때까지 반복
DBSCAN
어떤 기준이 되는 점을 먼저 찾는게 아닌, 임의의 데이터 포인트 하나에서 시작해 가까이에 있는 점들로 세력을 늘려나가는 알고리즘