강의

멘토링

로드맵

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

성욱님의 프로필 이미지
성욱

작성한 질문수

[캐글, 작업형3 로지스틱회귀] 이해가 되지 않습니다.!

작성

·

83

·

수정됨

0

[문제]

import pandas as pd

from statsmodels.formula.api import logit

df = pd.read_csv("/kaggle/input/bigdatacertificationkr/Titanic.csv")

formula = "Survived ~ C(Pclass) + Gender + SibSp + Parch"

model = logit(formula, data=df).fit()

model.params

 

다름아니라 여기서 Pclass에 왜 앞에 C()를 하셨는지 이해가 안갑니다.!

 

참고로 데이터 info는 다음 아래와 같았습니다.

Pclass : 'int'

Gender : 'object'

SibSp : 'int'

Parch : 'int'

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

tjddnr4706님, 질문하신 내용에 대해 답변드리겠습니다.

PclassC()를 사용하는 이유는 Pclass가 범주형 변수임을 명시하기 위함입니다.
통계 모델에서는 숫자로 표현된 변수도 실제 데이터의 의미에 따라 연속형(quantitative) 변수와 범주형(categorical) 변수로 구분할 필요가 있습니다. 예를 들어, Pclass 같은 경우는 1등석, 2등석, 3등석과 같이 범주를 나타내는 변수이지만 숫자로 표현되어 있습니다.

statsmodels에서 로지스틱 회귀 모델을 구성할 때, C() 함수는 해당 변수가 범주형 변수임을 명시적으로 나타내어, 모델이 이를 범주형 변수로 해석해서 처리하도록 합니다. 즉, 변수를 범주형으로 해석하게 만들어 주는 역할을 합니다. 따라서 Pclass가 숫자이지만 범주형 데이터로 처리하길 원할 때 C(Pclass)와 같이 사용하는 것입니다.

이를 통해 Pclass의 각 범주(1등석, 2등석, 3등석)가 생존 여부(Survived)에 미치는 영향을 각각의 독립된 변수로서 모델에 포함시킬 수 있습니다.

성욱님의 프로필 이미지
성욱

작성한 질문수

질문하기