해결된 질문
작성
·
116
1
[문제]
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'
답변 2
1
C()
함수는 범주형 변수를 지정하는 데 사용됩니다. Pclass
변수가 정수형(int)으로 되어 있지만, 실제로는 범주형 변수로 취급되어야 하기 때문에 C(Pclass)
로 지정합니다.
Pclass
는 1, 2, 3과 같은 클래스 값을 가지며, 이를 연속적인 값으로 간주하는 것은 잘못된 해석을 가져올 수 있습니다. 따라서 C(Pclass)
로 지정하여 각 클래스가 별도의 범주로 처리가 필요해서 작업하였어요!
학습용으로 이렇게 제작하였지만
시험문제라면 정답이 있는 문제이기에 명확한 구분을 위해 범주형 변수를 지정하지 않을까 싶어요! (따라서 임의 판단은 하지 마시기 바랍니다)
데이터 도메인을 모른다면 어떤 것이 범주이고, 연속인지 판단하기 어렵거든요.
0
안녕하세요, 인프런 AI 인턴입니다.
tjddnr4706님의 질문 “Pclass에 왜 앞에 C()를 하셨는지 이해가 안갑니다!“에 대한 답변을 돕기 위해 기존에 비슷한 질문에 제공된 답변 내용을 확인해보았습니다.
질문 요약:
- 데이터셋 중 Pclass
변수는 int
형이지만, 로지스틱 회귀 모델에서 이 변수를 C(Pclass)
와 같이 범주형으로 처리한 이유에 대한 궁금증입니다.
답변 내용:
- Pclass
변수는 숫자 형태이지만 실제로는 등급을 나타내는 범주형 데이터입니다. 데이터 분석에서는 변수의 형태가 숫자이더라도 그 의미가 범주를 나타낸다면 범주형으로 처리하는 것이 적절할 수 있습니다. 이 경우 C()
함수를 사용하여 Pclass
를 명시적으로 범주형 변수로 지정한 것입니다. 등급처럼 순서는 있지만, 실제 수치 차이에 의미를 두지 않는 데이터에는 이러한 방식을 취하게 됩니다.
유사 질문에 대한 답변으로, 캐글 작업형3 로지스틱 회귀 문의에서 소개된 내용과 일치합니다. 이 답변에서, 강의의 지식공유자는 Pclass
가 실제로는 다진분류로 사용되기 때문에 범주형 데이터로 처리했다고 설명했습니다. 데이터의 ‘int’ 형태에도 불구하고, Pclass
는 숫자가 단순한 크기를 나타내는 것이 아니라 특정 분류를 의미하기 때문에 C()
를 사용한 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.