작업형3 범주형 변수 관련 질문
선생님 안녕하세요!작업형3 로지스틱 회귀모형을 진행할 때범주형 데이터는 C()로 묶어서 하라고 말씀해주셨는데, 강의에서 만약 범주형 데이터인지 헷갈린다면 모두 C()로 묶어서 하라고 하셨던 것으로 기억하는데그렇게하면 에러가 뜨는데 왜일까요??# 2.
# 로지스틱 회귀모형
from statsmodels.formula.api import logit
# model = logit('Survived ~ C(Gender) + C(SibSp) + C(Parch) + C(Fare)', data=df).fit() --> error
# print(df.head())
model = logit('Survived ~ C(Gender) + SibSp + Parch + Fare', data=df).fit()
print(model.summary())
# print(model.params['Parch'])
# 답 : -0.201Warning: Maximum number of iterations has been exceeded.
Current function value: inf
Iterations: 35
Makefile:6: recipe for target 'py3_run' failed
make: *** [py3_run] Error 1
/usr/local/lib/python3.9/dist-packages/statsmodels/discrete/discrete_model.py:1819: RuntimeWarning: overflow encountered in exp
return 1/(1+np.exp(-X))
/usr/local/lib/python3.9/dist-packages/statsmodels/discrete/discrete_model.py:1872: RuntimeWarning: divide by zero encountered in log
return np.sum(np.log(self.cdf(q*np.dot(X,params))))
Traceback (most recent call last):
File "/goorm/Main.out", line 26, in <module>
model = logit('Survived ~ C(Gender) + C(SibSp) + C(Parch) + C(Fare)', data=df).fit()
File "/usr/local/lib/python3.9/dist-packages/statsmodels/discrete/discrete_model.py", line 1983, in fit
bnryfit = super().fit(start_params=start_params,
File "/usr/local/lib/python3.9/dist-packages/statsmodels/discrete/discrete_model.py", line 230, in fit
mlefit = super().fit(start_params=start_params,
File "/usr/local/lib/python3.9/dist-packages/statsmodels/base/model.py", line 579, in fit
Hinv = np.linalg.inv(-retvals['Hessian']) / nobs
File "<__array_function__ internals>", line 5, in inv
File "/usr/local/lib/python3.9/dist-packages/numpy/linalg/linalg.py", line 545, in inv
ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)
File "/usr/local/lib/python3.9/dist-packages/numpy/linalg/linalg.py", line 88, in _raise_linalgerror_singular
raise LinAlgError("Singular matrix")
numpy.linalg.LinAlgError: Singular matrix
Answer 2
1
추가 답변으로, C로 묶는 것은 분산분석에서 말씀해주셨습니다!
1
혹시 분산 분석과 헷갈린 것이 아닐까요?
제가 설마 로지스틱회귀에서 "만약 범주형 데이터인지 헷갈린다면 모두 C()로 묶어서 하라고" 이런 말을 했나요? 이건 심각한 문제가 있어요!
회귀 분석과 로지스틱 회귀에는 범주형과 수치형이 있어요!! 절대로 다 묶으면 안됩니다.
C()로 묶는 것은 문제에서 명시되어 있거나 누구나 이해할 수 있는 상식선에서 범주형이 아닌 애매한 것이면 묶으면 안됩니다.
0
앗 C로 묶는것은 분산분석에서 말씀해주신게 맞아요 그런데 앞에서부터 복습하면서 헷갈려 여쭤보게됐습니다!
그런데 아직 헷갈리는 부분은,
로지스틱 회귀에선 그럼 독립변수가 type이 object인 경우에만 C로 묶으면 될까요?
회귀분석에서는 범주형도 C로 묶지 않으시고 하셨는데 그럼 C로 묶지 않고 하면 되는것 맞을까요?
일원분산에서는 범주형도 C로 안묶으셨는데, 일원,이원분산분석 모두 헷갈리지 않게 독립변수들은 C로 묶으면 될까요?
작업형 1 유형 부분
0
9
1
작업형 1 (삭제예정, 구 버전)
0
30
2
수강기간 연장 문의드립니다.
0
21
1
2유형 레이블 인코딩 VS 원핫 인코딩
0
24
3
수강기간 연장 문의드립니다.
0
26
1
인덱스 슬라이싱
0
27
2
질문 드립니다.
0
45
2
강의 내용 관련 질문드립니다~
0
43
2
수강 연장 문의
0
54
2
강의자료 일괄 다운로드
0
50
2
수강기간 연장 문의드립니다
0
40
2
list 문제 질문드립니다~
0
35
2
빅분기 실기 12회 재도전
0
53
2
강의 기간 연장 가능여부 검토 요청건
0
39
2
수강기간 연장 문의 드립니다
0
43
2
수강기간 연장 문의드립니다
0
50
2
질문이요
0
56
2
수강기간 연장 문의드립니다.
0
58
2
문제 3-2 질문드립니다
0
47
2
수강기간 연장 문의 드립니다.
0
61
2
변수, 칼럼 , df 구분
0
51
2
수강기간 연장 문의드립니다.
0
50
2
수강기간 연장 문의
0
49
2
수강기간 연장 문의드립니다.
0
42
2

