개념: K-최근접 이웃 회귀와 비슷하게 sample data에서 가장 가까운 n개의 데이터를 참고하여 분류를 진행한다. 구체적으로 가장 이웃의 클래스 비율 중 가장 큰 값으로 sample data를 분류를 한다
실습
from sklearn.neighbors import KNeighborsClassifier
kn = KNeighborsClassifier(n_neighbors=3)
kn.fit(train_scaled, train_target)
print(kn.score(train_scaled, train_target))
print(kn.score(test_scaled, test_target))
import numpy as np
proba = kn.predict_proba(test_scaled[:5])
# predict_proba: 어떤 예측 결과를 바탕으로 분류 결과를 결정했는지 확인할 수 있다
print(np.round(proba, decimals=4))
개념: 선형 방정식에 시그모이드 함수(Sigmoid function)을 적용하여 얻는 0~1 사이의 값을 확률로 사용하여 분류를 진행한다.
분류의 종류:
분류 대상이 3개 이상인 경우이며, 이진분류를 n번 사용하여 진행한다
소프트맥스 함수 사용
시그모이드 함수 (Sigmoid) 1 / (1 + exp(-z)) cf. $z = a*{x_1} + b*{x_2} + c$ 형태의 선형 방정식

$e_{sum} = e^{x_1} + e^{x_2} + e^{x_3} + ...$ $s1 = {e^{z_1}\over e_{sum}}$ $s2 = {e^{z_2}\over e_{sum}}$ $s3 = {e^{z_3}\over e_{sum}}$ ....
$s1 + s2 + s3 + ... = 1$ 이며 각 $s_i$값이 분류할 때 쓰이는 확률로 사용된다
from sklearn.linear_model import LogisticRegression
lr = LogisticRegression() #L2 규제가 자동으로 적용된다
lr.fit(train_bream_smelt, target_bream_smelt)
print(lr.predict(train_bream_smelt[:5])) #훈련한 모델로 예측 진행
print(lr.predict_proba(train_bream_smelt[:5])) #예측을 할 때 사용한 확률을 출력
decisions = lr.decision_function(train_bream_smelt[:5]) #시그모이드 함수 적용 직전 값 출력
print(decisions)