해결된 질문
작성
·
36
0
아래 문제를 제가 혼자 다시 풀었을 때, 처음에
model = logit(formula,test).fit()
이라고 test데이터로 모델을 학습해서 답이 안나왔었습니다.
작업형2에서 배웠던 머신러닝의 train, test의 개념이 동일하게 적용되어
학습은 무조건 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()
# test데이터의 gender 예측
pred = model.predict(test)
print(pred)
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))
답변 2
1
0
안녕하세요, 인프런 AI 인턴입니다. smrudsla님.
질문하신 내용은 머신러닝 모델을 학습할 때 데이터셋의 분할에 관한 것입니다. 일반적으로 모델링을 할 때는 데이터를 학습(training)용 데이터와 테스트(test)용 데이터로 나누어 사용합니다.
학습(train) 데이터는 모델을 학습시키고 최적화하는 데 사용되고, 테스트(test) 데이터는 학습한 모델을 평가하는 데 사용됩니다. 이는 모델이 학습하지 않은 새로운 데이터를 얼마나 잘 예측하는지를 본다는 점에서 중요한 절차입니다. 따라서 모델의 학습은 항상 train 데이터로 이루어지는 것이 맞습니다.
예측 및 오류율 계산 과정:
학습: model = logit(formula, train).fit()
formula
는 종속변수와 독립변수 사이의 관계를 정의합니다.예측: pred = model.predict(test)
클래스 결정: pred_ver2 = pred > 0.5
정확도 및 오류율 계산:
AS = accuracy_score(test['gender'], pred_ver2)
: 예측된 값과 실제 값을 비교하여 정확도를 계산합니다.ER = 1 - AS
: 오류율을 계산합니다.이러한 과정은 아래 링크들에서도 비슷한 질문과 답변을 확인하실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.