머신러닝

로지스틱 회귀

UniCoti(유니코티) 2024. 12. 20.
반응형

로지스틱 회귀는 선형 방정식을 사용한 분류 알고리즘이며, 시그모이드 함수나

소프트맥스 함수를 사용하여 클래스 확률을 출력할 수 있다.

 

함수값 제한

이때 시그모이드함수는 확률을 0-1안에 가두는 역할을 한다.

새로 알게 된 사실은 점대칭 도형이 아닌 것 같다는 사실이다.

 

그리고 소프트맥스 함수는 각 확률의 합이 1이 될 수 있도록 유도한다.


여기에 다중 회귀 모델을 응용하면 다중 분류를 수행할 수 있다.

 

import pandas as pd
fish = pd.read_csv('https://bit.ly/fish_csv_data')
fish.head()

fish_input = fish[['Weight', 'Length', 'Diagonal', 'Height', 'Width']].to_numpy()
fish_target = fish["Species"].to_numpy();

from sklearn.model_selection import train_test_split
train_input, test_input, train_target, test_target = train_test_split(fish_input, fish_target, random_state=42)

from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
ss.fit(train_input)
train_scaled = ss.transform(train_input)
test_scaled = ss.transform(test_input)

from sklearn.neighbors import KNeighborsClassifier
kn = KNeighborsClassifier(n_neighbors=3)
kn.fit(train_scaled, train_target)

from sklearn.linear_model import LogisticRegression
lr = LogisticRegression(C=20, max_iter=1000)
lr.fit(train_scaled, train_target)

decision = lr.decision_function(test_scaled[:5])

from scipy.special import softmax
proba = softmax(decision, axis=1)
print(np.round(proba, decimals=3))

 

코드는 다중 분류의 예시이다.

각 클래스별로 확률을 계산하여 출력하는 기능을 가진다.


이번 글은 로지스틱 회귀에 대해서 알아봤다.

이게 적용은 할 수 있는데 로지스틱 함수에 대한 원리는 빠진 것 같다.

저 sklearn이라는 라이브러리에서 너무 많은 것을 지원해 준다.

 

그래도 활용할 방법은 알아가는 것 같아서 좋다.

softmax도, sigmoid도 다 지원해 줘서 편하긴 하지만

원리 자체는 사용할 정도로 익숙해지진 않는 것 같다.


이상으로 도움이 되었길 바라며,

 

끝.

반응형

'머신러닝' 카테고리의 다른 글

머신 러닝) padding, same  (0) 2024.12.25
머신 러닝) 필터와 커널  (0) 2024.12.25
다중 회귀 알고리즘  (0) 2024.12.20
선형 회귀 알고리즘  (0) 2024.12.20
k - 최근접 이웃 알고리즘 (KNN)  (1) 2024.12.20

댓글

💲 추천 글