CHAPTER4. 다양한 분류 알고리즘

4-1. 로지스틱 회귀

→ 분류 알고리즘을 통해 클래스별 확률을 예측하자!

from sklearn.neighbors import KNeighborsClassifier #KNeighborsClassifier 클래스객체 만들고 훈련세트로 모델 훈련
kn = KNeighborsClassifier(n_neighbors=3) #최근접 이웃개수k=3
kn.fit(train_scaled , train_target)
print(kn.score(train_scaled , train_target))
print(kn.score(test_scaled , test_target))
print(kn.classes_)
print(kn.predict(test_scaled[:5])) #타깃값으로 예측을 출력함

import numpy as np
proba = kn.predict_proba(test_scaled[:5]) #메서드의 출력 순서는 classes_ 의 속성과 같음
print(np.round(proba, decimals=4))

4-1-1.png

∴ 해당 모델이 계산한 확률이 가장 가까운 이웃의 비율

distances , indexes = kn.kneighbors(test_scaled[3:4])
print(train_target[indexes])

4-1-2.png

4-1-3.png

import numpy as np #넘파이를 이용해 그래프 그리기
import matplotlib.pyplot as plt
z = np.arange(-5 , 5 , 0.1) #z의 위치에 따라 시그모이드 함수 계산하기
phi = 1/(1+np.exp(-z))
plt.plot(z,phi) 
plt.show()

4-1-4.png

∴ 이진분류 → 0.5 보다 크면 양성 클래스, 0.5보다 작으면 음성 클래스