Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- kt 에이블스쿨 기자단
- 프로그래머스
- KT 에이블스쿨
- 에이블 기자단
- 케이티 에이블스쿨 6기 java
- 구현
- 케이티 에이블스쿨 기자단
- 티스토리챌린지
- 머신러닝
- kt 에이블스쿨 6기 미니 프로젝트
- kt aivle school
- 케이티 에이블스쿨 6기 후기
- KT AIVLE
- 오블완
- 백준
- SQLD
- 케이티 에이블스쿨 6기
- 케이티 에이블스쿨 6기 ai
- 앙상블
- 판다스
- 케이티 에이블스쿨 6기 spring
- kt 에이블스쿨 6기 ai
- 백준 사탕 게임
- 데이터 프레임
- 알고리즘
- 케이티 에이블스쿨
- 파이썬
- kt 에이블스쿨 6기 빅프로젝트
- kt 에이블스쿨 6기
- 네트워크
Archives
- Today
- Total
미식가의 개발 일기
[머신러닝] 로지스틱 회귀분석(Logistic Regresstion) 본문
로지스틱 회귀분석이란?
- 이진 분류 문제를 풀기 위한 설계된 통계방법(다중 클래스 분류 문제도 적용 가능)
- 데이터 수가 많지 않고, 간단한 모델이 필요할 때 사용
- 분석결과에 대한 설명과 해석이 중요할 때 사용
예제 데이터 생성 및 시각화
예제 데이터 생성
from sklearn.datasets import make_classification
X, y = make_classification(n_features=1, n_samples=300,
n_redundant=0, n_informative=1,
n_clusters_per_class=1, class_sep=0.5,
random_state=0)
- n_features: 특성의 개수
- n_samples: 샘플의 개수
- n_redundant: 중복값의 개수
- n_informative: 유용한 특성의 수
- n_clusters_per_class: 클래스별 클러스터의 수
- class_sep: 클래스 간 분리 정도, 값이 클수록 분리가 뚜렷해짐
- random_state: 랜덤 상태, 값이 0이면 실행할 때마다 같은 결과가 나옴
예제 데이터 시각화
import matplotlib.pyplot as plt
plt.scatter(X, y, c=y)
plt.xlabel('Feature')
plt.ylabel('Target')
plt.colorbar(label='Target')
plt.show()
- plt.scatter: 데이터를 산점도로 그림 → c=y: 점의 색을 y의 값에 따라 다르게 설정
로지스틱 회귀 모델 생성
from sklearn.linear_model import LogisticRegression
import numpy as np
# 로지스틱 회귀 모델 생성
model = LogisticRegression()
# 모델 훈련
model.fit(X, y)
x_data = np.linspace(-1.5, 1.5, 100).reshape(-1, 1)
predict = model.predict_proba(x_data)[:, 1]
plt.plot(x_data, predict, lw=3)
plt.scatter(X, y, c=y)
plt.xlabel('Feature')
plt.ylabel('Target')
plt.colorbar(label='Target')
plt.show()
- np.linspace(-1.5, 1.5, 100): -1.5~1.5까지 균등하게 100개의 숫자를 생성
- reshape(-1, 1): 100개의 숫자를 1열짜리 100행의 2차원 배열로 변환, 각 숫자를 하나의 샘플로 간주
- model.predict_proba(x_data)[:, 1]: 클래스 1에 속할 확률을 예측
이진 분류에서 클래스 1은 긍정적인 결과나 참인 결과를 나타낸다. 따라서 관심 있는 클래스가 클래스 1이므로 클래스 1에 속할 확률을 예측한다.[[P(class=0), P(class=1)], [P(class=0), P(class=1)], [P(class=0), P(class=1)], ... ]
- → 클래스 1에 속할 확률을 예측하는 이유는?:
- lw=3: 선 두께
매개변수
- 형광펜 값이 기본값
penalty | 정규화 종류 -> l1, l2, elasticnet, none |
dual | True: 이중(dual): 데이터 샘플 수 > 특징 수 False: 원시(Primal): 데이터 샘플 수 < 특징 수 |
tol | 최적화 중단을 위한 허용 오차 -> 1e-4 |
C | 정규화 강도(값이 작을수록 강함) -> 1.0 |
fit_intercept | 절편(상수 항) 포함 여부 -> True, False |
class_weight | 가충치(불균형 처리) -> None |
random_state | 무작위성 설정 -> None |
solver | 최적화 문제 해결 알고리즘 -> newton-cg, lbfgs, liblinear, sag, saga |
max_iter | 최대 반복 횟수 -> 100 |
multi_class | 다중 클래스 분류 전략 -> auto, ovr, multinomial |
verbose | 로그 메세지의 양 설정 -> 0, 1 |
warm_start | 모델 초기화 -> True, False |
n_jobs | CPU 코어 수 -> None |
- 매개변수 적용 방법
model = LogisticRegression(penalty='l2',
C=1.0,
solver='lbfgs',
max_iter=100,
class_weight=None,
random_state=None)
반응형
'ML, DL' 카테고리의 다른 글
[머신러닝] 데이터 변환 및 시각화(with 캐글) (0) | 2024.07.14 |
---|---|
[머신러닝] 회사 합격 여부 예측하기(분류: 결정 트리, 랜덤 포레스트) (4) | 2024.07.14 |
[머신러닝] 분류 문제 vs 회귀 문제 (0) | 2024.07.13 |
[머신러닝] 범주형 데이터 인코딩 (1) | 2024.07.12 |
[머신러닝] 결측치, 중복값 처리 (0) | 2024.07.12 |