반응형
로지스틱 회귀는 선형 방정식을 사용한 분류 알고리즘이며, 시그모이드 함수나
소프트맥스 함수를 사용하여 클래스 확률을 출력할 수 있다.
이때 시그모이드함수는 확률을 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 |
댓글