프로그래밍/Python

[혼공머신러닝] 4장 로지스틱회귀 정리

Dibrary 2022. 7. 23. 09:50
반응형

안녕하세요 Dibrary입니다.

이번에는 혼자 공부하는 머신러닝의 4장, 로지스틱 회귀에 대해 정리해보겠습니다.

 


로지스틱 회귀는 '회귀'라는 단어가 들어가긴 하지만 분류 모델입니다. 
학습하는 선형 방정식이 회귀처럼 생겼을 뿐이죠.

이 분류가 될 확률을 구한다고 할 때, 확률은 0~1 사이의 값이죠. (1은 100%를 의미.)

근데, 확률이 0인 경우는 잘 안나와야겠죠? 확률이 높을 수록 분류가 잘 될 것이구요.

그러한 특성을 가진 그래프를 '시그모이드 함수'라고 합니다.

그려보면 위와 같습니다. 잘 안보이신다구요? grid를 추가해 보겠습니다.

x축의 0값을 기준으로 왼쪽으로 가면 0으로 수렴하고, 오른쪽으로 갈 수록 1에 수렴합니다.

 


임의 데이터를 가지고 로지스틱 회귀를 해 보겠습니다.

이렇게 입력하면 fish 데이터를 확인할 수 있습니다.

그러면 우리는 Weight, Length, Diagonal, Height, Width 라는 '특성 값'을 이용해서 Species를 확인하는 머신을 만들어볼 것입니다.

그러기 위해서 아래와 같이 분류해 줍니다.

그리고, 홀드아웃 과정을 거쳐야죠. 

 

물론, 표준화 과정도 빼먹지 않습니다.

 

그 뒤에 본격적인 작업을 합니다. 

위 코드를 해석해보자면, bream_smelt_indexes 안에 train_target이 Bream과 Smelt인 것만 걸러집니다. (나머지는 OR조건에 걸리지 않을 것이므로 bream_smelt_indexes안에 들어갈 수 없는 것이죠)

그리고, 해당 index를 이용해서 train_scaled 에 해당 index 값만 뽑아낸 것을 train_bream_smelt라고 하고,
train_target에 해당 index 값만 뽑아낸 것을 target_bream_smelt라고 한 것입니다.

그리고, 해당 데이터만을 이용해서 LogisticRegression( ) 객체에 훈련(fit)을 시킨 것입니다.

 

굉장히 간단하죠?

 

그 뒤에 임의 5개 데이터를 뽑아서 predict로 확인해 보니 예측한 결과가 나옵니다.

위 5개 데이터를 뽑아낸 결과로는 뭔 소린지 잘 모르시겠으면, 낱개 데이터를 직접 확인해 보시면 됩니다.

이렇게 말이죠, 0번째 데이터는 위 숫자들의 특성을 가지고 있고, 분류는 Bream인데,
predict의 결과를 보니 Bream으로 한 것입니다. 정확하게 했죠? ㅎ

728x90
반응형