인프런 커뮤니티 질문&답변

dbskqnsghd님의 프로필 이미지
dbskqnsghd

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

예시문제 작업형3(신 버전) 🆕 updated 2023.11 / 로지스틱 회귀

작업형3 범주형 변수 관련 질문

해결된 질문

작성

·

439

0

선생님 안녕하세요!작업형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

답변 2

1

추가 답변으로, C로 묶는 것은 분산분석에서 말씀해주셨습니다!

dbskqnsghd님의 프로필 이미지
dbskqnsghd
질문자

앗 네네 그건 알고있었는데 앞에서부터 복습하면서 헷갈려서 여쭤봤어요 ㅎㅎ 감사합니다!! 🙂

1

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

혹시 분산 분석과 헷갈린 것이 아닐까요?
제가 설마 로지스틱회귀에서 "만약 범주형 데이터인지 헷갈린다면 모두 C()로 묶어서 하라고" 이런 말을 했나요? 이건 심각한 문제가 있어요!

 

회귀 분석과 로지스틱 회귀에는 범주형과 수치형이 있어요!! 절대로 다 묶으면 안됩니다.

C()로 묶는 것은 문제에서 명시되어 있거나 누구나 이해할 수 있는 상식선에서 범주형이 아닌 애매한 것이면 묶으면 안됩니다.

 

 

dbskqnsghd님의 프로필 이미지
dbskqnsghd
질문자

앗 C로 묶는것은 분산분석에서 말씀해주신게 맞아요 그런데 앞에서부터 복습하면서 헷갈려 여쭤보게됐습니다!

그런데 아직 헷갈리는 부분은,

  1. 로지스틱 회귀에선 그럼 독립변수가 type이 object인 경우에만 C로 묶으면 될까요?

  2. 회귀분석에서는 범주형도 C로 묶지 않으시고 하셨는데 그럼 C로 묶지 않고 하면 되는것 맞을까요?

  3. 일원분산에서는 범주형도 C로 안묶으셨는데, 일원,이원분산분석 모두 헷갈리지 않게 독립변수들은 C로 묶으면 될까요?

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

새로 촬영한 "응시 전략 영상"을 한번 봐주세요!!! (커리큘럼 하단에 임시로 넣어 놨습니다)

dbskqnsghd님의 프로필 이미지
dbskqnsghd

작성한 질문수

질문하기