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

reverq님의 프로필 이미지
reverq

작성한 질문수

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

예시문제 작업형3(신 버전)

로지스틱 회귀분석 범주형변수 인코딩

해결된 질문

작성

·

34

0

안녕하세요,

예시문제 작업형 3번의 2번 문제 풀이에서 질문있습니다!

image.png

여기에서 로지스틱회귀 분석을 위해 범주형 변수 중 인코딩이 되지 않은 Gender 변수에 C(Gender)를 붙이셨더라구요

image.png

혹시 인코딩되지 않은 변수의 앞에 C를 붙이는 것이 필수로 수행되어야하는것일까요?

제가 궁금해서 C를 붙이지 않고 모델썸머리를 출력하고 값을 비교해봤는데 모든 표값이 같기는 했습니다.

만약, 필수로 C를 붙여주어야한다면 로지스틱회귀분석 뿐만아니라 분산분석(일원/이원)에도 모두 붙여주어야 할까요?

답변 2

0

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

로지스틱회귀분석, 회귀분석에서는 문제에서 범주형 변수라고 지정했다면 C()를 붙여주고 임의로 붙이진 마세요! (정답이 있는 문제입니다)

https://www.kaggle.com/code/agileteam/t3-aic-bic 2번째 문제 참고

 

제가 궁금해서 C를 붙이지 않고 모델썸머리를 출력하고 값을 비교해봤는데 모든 표값이 같기는 했습니다.

실험 정신 너무 좋습니다!! 달라지는 경우는 문자가 아닌 값이 범주형이지만 숫자인 경우입니다! 문자는 붙이지 않아도 자동처리함

 

분산분석에서는 독립변수에 C() 붙여주세요

 

0

안녕하세요, 인프런 AI 인턴입니다. reverq님께서 질문하신 내용은 로지스틱 회귀분석에서의 범주형 변수 처리와 관련이 있습니다.

로지스틱 회귀분석을 수행할 때, 범주형 변수는 일반적으로 더미 변수로 변환되는 방식으로 처리됩니다. Python의 statsmodels 라이브러리에서 logit 함수를 사용할 때, 범주형 변수를 명시적으로 지정하기 위해 C()를 사용합니다. 이는 해당 변수가 범주형임을 명시적으로 알려주어 모델이 올바르게 처리하도록 돕습니다.

  • C()를 사용하는 이유: C() 함수는 해당 변수가 범주형임을 명시합니다. 특히 문자로 되어 있는 경우에는 자동으로 인코딩되므로 굳이 C()를 붙이지 않아도 자동으로 처리됩니다. 그러나 숫자로 된 범주형 변수의 경우는 C()를 통해 명시적으로 지정해 주는 것이 일반적입니다.

  • 로지스틱 회귀분석과 분산분석에서의 사용: 로지스틱 회귀뿐만 아니라 ANOVA와 같은 분산분석에서도 범주형 변수가 존재한다면 C()를 붙이는 것이 좋습니다. 이는 데이터의 종류에 따라 달라질 수 있으며, 특히 숫자로 범주형 데이터를 표현할 때에는 C()로 명시해주는 것이 안전한 방법입니다. 문자로 된 범주형 변수는 이미 명확하기 때문에 자동 인코딩이 가능합니다.

유사한 질문과 답변이 있는 링크를 참고하세요: 로지스틱 회귀 모형 문제에서 질문 드립니다.

위 게시물에서는 Pclass와 같이 숫자로 표현되었으나 범주형인 경우, C()로 지정해야 한다는 내용을 다루고 있습니다.

또 다른 관련 질문 예는 여기를 참고하세요: logit 이나 ols 사용할때 앞에 C()를 붙이는 이유?

이 게시물에서는 C()의 역할과 필요성에 대해 자세히 설명하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

reverq님의 프로필 이미지
reverq

작성한 질문수

질문하기