일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 시각화
- IRIS
- ADsP
- matplotlib
- 데이터분석
- 머신러닝
- ML
- 이코테
- 딥러닝
- 데이터 전처리
- r
- pytorch
- 자격증
- 이것이 코딩테스트다
- 파이썬
- SQLD
- tableau
- 코딩테스트
- sklearn
- scikit learn
- Deep Learning Specialization
- Python
- Google ML Bootcamp
- pandas
- 데이터 분석
- SQL
- 데이터분석준전문가
- 회귀분석
- 태블로
- 통계
- Today
- Total
함께하는 데이터 분석
[Find-A] [Scikit Learn] 소프트맥스 회귀 본문
이번에는 소프트맥스 회귀를 진짜 맛만 보겠습니다.
정말 간단하게 저번에 봤던 iris 데이터를 가지고
코드만 돌려보는 식으로 진행할게요!
이전의 데이터 설명이나 로지스틱 회귀를 파이썬으로 돌린 포스팅은
2022.08.19 - [학회 세션/파인드 알파] - [Find - A] [Python] 로지스틱 회귀
여기를 확인하시면 됩니다.
시작할게요!
소프트맥스 회귀
로지스틱 회귀 모델은 여러 개의 이진 분류기를 훈련시켜 연결하지 않고 직접 다중 클래스를 지원하도록 되어있습니다.
이를 소프트맥스 회귀(Softmax Regression) 또는 다항 로지스틱 회귀(Multinomial Logistic Regression)이라고 합니다.
이제 코드로 맛만 볼게요.
데이터 불러오기
from sklearn import datasets
iris = datasets.load_iris()
사이킷런의 내장 데이터인 iris데이터를 불러왔습니다.
X = iris['data'][:, (2, 3)] # 꽃잎 길이, 꽃잎 너비
y = iris['target']
꽃잎의 길이와 너비를 갖고 소프트맥스 회귀를 사용하여
붓꽃을 setona, versicolor, virginica 총 3개의 클래스로 분류해보겠습니다.
from sklearn.linear_model import LogisticRegression
softmax_reg = LogisticRegression(multi_class='multinomial',
solver='lbfgs', C=5)
softmax_reg.fit(X, y)
앞선 로지스틱 회귀 모델과 동일하게 LogisticRegression은 동일합니다.
하지만 여기서 multi_class 매개변수를 'multinomial'로 변경하고
solver 매개변수에 'lbfgs'와 같은 소프트맥스 회귀를 지원하는 알고리즘을 지정하면 됩니다.
하이퍼파라미터 C는 L2 규제를 적용하는 것으로 값이 커지면 약한 규제, 값이 작아지면 강한 규제를 가합니다.
이제 마지막으로 분류해볼까요?
print(softmax_reg.predict([[4, 2]]))
print(softmax_reg.predict_proba([[4, 2]]))
>>> [1]
[[0.0026644 0.81154903 0.18578657]]
꽃잎의 길이가 4, 너비가 2인 붓꽃은 class가 1인 Versicolor로 분류된 것을 확인할 수 있습니다.
앞서 확인했던 바로는 너비만 활용했을 때 1.6을 결정 경계로 너비가 2이면 Virginica로 분류했습니다.
하지만 꽃잎의 길이까지 고려하면 Versicolor로 분류하는 것을 볼 수 있습니다.
그리고 0.2%의 확률로 Setona, 81%의 확률로 Versicolor, 18%의 확률로 Virginica라고 출력하는 것을 볼 수 있습니다.
추가적으로 앞서 이진 분류기인 로지스틱 모형은 50% 이상인 클래스를 예측했지만
이번에는 클래스를 3개로 분류하므로 33% 이상인 클래스를 예측할 수 있어
50%보다 작아도 예측이 될 수 있다는 점을 알아두시면 좋습니다.
https://www.hanbit.co.kr/store/books/look.php?p_code=B9267655530
'학회 세션 > 파인드 알파' 카테고리의 다른 글
[Find-A] 인공 신경망 (0) | 2022.09.12 |
---|---|
[Find-A][Scikit Learn] 앙상블 학습 (0) | 2022.08.28 |
[Find-A][Scikit Learn] Decision Tree (0) | 2022.08.24 |
[Find-A] [Scikit Learn] 로지스틱 회귀 (0) | 2022.08.19 |
[Find-A] 파인드 알파 머신러닝이란? (1) | 2022.08.12 |