해결된 질문
작성
·
33
0
import pandas as pd
from statsmodels.formula.api import logit
from sklearn.metrics import accuracy_score
# 1. 로지스틱 회귀 모델 적합 (test로 직접 학습 — 실전에서는 train 사용 권장)
model = logit('target ~ age + sex + cp + trestbps + chol + fbs + restecg + thalach + exang + oldpeak + slope + ca + thal', data=test).fit()
# 2. 예측 수행 (test 그대로 사용)
pred_probs = model.predict(test)
pred = (pred_probs > 0.5).astype(int)
# 3. 정확도 → 오류율 계산
error_rate = 1 - accuracy_score(test['target'], pred)
print(f'오류율: {error_rate:.4f}')
Optimization terminated successfully.
Current function value: 0.310865
Iterations 8
오류율: 0.1034
# model = logit('target~age+sex+cp+trestbps+chol+fbs+restecg+thalach+exang+oldpeak+slope+ca+thal',test).fit()
import statsmodels.api as sm
X2 = test.drop(columns = ['target'])
X2 = sm.add_constant(X2)
pred = model.predict(X2)
pred = (pred>0.5).astype(int)
pred
from sklearn.metrics import accuracy_score
1-accuracy_score(test['target'],pred)
0.1954022988505747
문제는 test데이터의 독립변수로 target 예측 후 오류율을 구하여라 입니다.
근데 로짓이랑 sm이랑 차이가 좀 심하게 나는데 원래 로지스틱 회귀분석할때 sm으로 해야하나요..?
답변 2
0
logit은 상수항 처리를 자동으로 해주는 것인데
logit 모델에 갑자기 왜 상수항을 더 했을까요?
혼용하면 안됩니다. 저는 상수항을 더하는 방법은 알려드린적이 없어요.
0
안녕하세요, 인프런 AI 인턴입니다.
로지스틱 회귀 분석을 진행할 때 사용하는 라이브러리나 패키지에 따라 결과가 조금씩 다를 수 있습니다. 특히, statsmodels
와 scikit-learn
는 서로 다른 방식으로 모델을 구현하고, 디폴트 옵션 값이나 최적화 알고리즘도 다를 수 있습니다.
두 방법 모두 로지스틱 회귀 모델을 적합하는 데 사용될 수 있는 대표적인 방법입니다만, 결과의 차이는 각 패키지의 구현 차이에서 비롯될 수 있습니다.
logit
vs sm.OLS
:
logit
: statsmodels
의 사용 방법으로, 통계 모델링에 강점이 있으며, 오차에 대한 유의성 검토를 할 때 사용됩니다.sm.OLS
: 일반적으로 회귀 분석에 사용되는 API로 이 역시 statsmodels
의 사용 방법이지만, 보통 등급 회귀에 좀 더 최적화되어 있습니다.결과 차이의 원인:
추천드리는 방법은 처음부터 같은 방식으로 모델을 적합하고, 동일한 평가 지표를 활용하여 비교하는 것입니다. 또한, 각 패키지의 설정이 다르게 되어 있는 경우가 종종 있으니, 모델 학습 전에 해당 옵션들을 통합적으로 조정해보는 것도 좋은 방법입니다.
아래의 링크들을 통해 유사한 질문과 답변을 참고해 보세요:
- 작업형3 로지스틱 회귀: 이 게시물에서는 LogisticRegression
모델에 대한 방법론 차이에 대한 질문과 답변들을 확인할 수 있습니다.
- 예시문제 작업형 2유형 질문있습니다: 결측치 처리나 데이터 전처리에 관련된 다른 사례를 확인할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.