분류 classification

ro_ot ㅣ 2020. 1. 23. 23:02

※ 클래스가 2개 분인 2진(binary) 분류를 해봅시다. 0,1 분류

  1 : 관심 타겟 ( 더 적은 샘플) 0 : 관심 없는 클래스 (더 흔하고 많은 샘플)

  • 암환자 분류 : 0 = 정상 1 = 암환자
  • 사기꾼 검출 : 0 = 정상 1 = 사기꾼
  • 생존자 검출 : 0 = 사망 1 = 생존자
import numpy as np

  *  목표: 혈액형 예측하기(A, B)

  • A의 특징 : 배려심 있다, 막연한 걱정
  • B의 특징 : 용기, 기분파다
# 판단력, 사회성
x = [[50, 90], [80, 50]]
y = [0, 1]
x = np.array(x)
y = np.array(y)
from sklearn.linear_model import LogisticRegression # 논리 회귀 = 선형 회귀
model = LogisticRegression().fit(x,y) # 학습
model.predict(x)

→ array([0, 1])

# y = w0 * x0 + w1 * x1 + b
model.coef_, model.intercept_

 (array([[ 0.16068743, -0.1498761 ]]), array([ 0.0004109]))

# B형이냐 ? (B형이 클래스 1 이므로)
np.sum(model.coef_ * x + model.intercept_, axis=1) > 0# 가로방향의 값을 더하다.

 array([False, True], dtype=bool)

from sklearn.datasets import load_iris
x, y =load_iris(True)
x.shape, y.shape

 ((150, 4), (150,))

x = x[:100]
y = y[:100]
model = LogisticRegression().fit(x,y)
model.score(x,y)

 1.0

# 마지막으로 0보다 크냐(후처리) 로 최종 판정을 내린다.
np.sum(model.coef_ * x +  model.intercept_, axis =1) >0

array([False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True], dtype=bool)

'Deep learning > Code' 카테고리의 다른 글

Multi-class  (0) 2020.01.29
분류2 classification  (0) 2020.01.28
2020_01_23 KNN  (0) 2020.01.23
object_detection_yolo_keras  (2) 2020.01.22
object_detection_yolo_darknet  (0) 2020.01.22