작성
·
11
·
수정됨
0
아래 코드에 정답이 0.478이 나와야하는데,
저는 0.422가 나옵니다.
근데 아무리 봐도 제가 선생님 풀이 코드랑 다른게 없어서
어디가 틀린지 모르겠어서 질문 드립니다.
내일 시험이라 어디서 제가 잘못했는지 가능한 빨리 알고 싶습니다.ㅠㅠ
import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p4/7_3/clam.csv")
# train test 나누기
train = df.iloc[:210]
test = df.iloc[210:]
# print(train.shape, test.shape) (210, 6) (90, 6)
# logit
from statsmodels.formula.api import logit
formula = 'gender ~ weight'
model = logit(formula,test).fit()
# test데이터의 gender 예측
pred = model.predict(test)
pred_ver2 = pred > 0.5
from sklearn.metrics import accuracy_score
AS = accuracy_score(test['gender'],pred_ver2)
ER = 1 - AS
print(round(ER,3))
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
smrudsla님께서 작성하신 코드를 확인해본 결과, 주어진 코드는 테스트 데이터셋을 학습에 사용하고 있는 부분에서 문제가 발생하고 있는 것 같습니다.
일반적으로 회귀 분석 모델을 훈련할 때 모델을 학습할 훈련 데이터셋과 테스트할 테스트 데이터셋으로 나누는데, 귀하의 코드는 test
데이터셋을 학습에 사용하고 있습니다. 이를 train
데이터셋으로 변경해야 할 것입니다.
아래 코드를 참조하여 수정해보실 수 있습니다:
import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p4/7_3/clam.csv")
# train test 나누기
train = df.iloc[:210]
test = df.iloc[210:]
# print(train.shape, test.shape) (210, 6) (90, 6)
# logit
from statsmodels.formula.api import logit
formula = 'gender ~ weight'
model = logit(formula, train).fit() # train 데이터셋으로 변경
# test데이터의 gender 예측
pred = model.predict(test)
pred_ver2 = pred > 0.5
from sklearn.metrics import accuracy_score
AS = accuracy_score(test['gender'], pred_ver2)
ER = 1 - AS
print(round(ER, 3))
이렇게 코드를 수정 후 실행해 보시길 바랍니다. 결과가 기대하신 것과 다를 경우, 다른 부분도 검토해보는 것이 좋습니다. 문제가 지속된다면, 데이터의 특성이나 모델의 설정을 재검토해보는 것도 좋은 접근법입니다.