inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

[작업형2] 연습문제 섹션 5

라벨인코딩을 했더니 F1 Score가 1.0이 나옵니다..

75

LJM

작성한 질문수 6

0

  1. 실제 시험에서 너무 정확한 점수(높은)가 나오면 과적합을 의심해야 할까요?

    import pandas as pd
    
    # 다중분류 문제
    train = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p2/drug_train.csv")
    test = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p2/drug_test.csv")
    
    target = train.pop('Drug')
    
    # train, test 둘다 결측치 없고, 종류수 같음
    cols = train.select_dtypes(include='object').columns
    
    # baseline
    # train = train.drop(cols, axis=1)
    # test = test.drop(cols, axis=1)
    
    # one-hot
    # train = pd.get_dummies(train, columns = cols)
    # test = pd.get_dummies(test, columns = cols)
    
    # Label
    from sklearn.preprocessing import LabelEncoder
    for col in cols:
      le = LabelEncoder()
      train[col] = le.fit_transform(train[col])
      test[col] = le.transform(test[col])
    
    # 학습 데이터 분리
    from sklearn.model_selection import train_test_split
    X_tr, X_val, y_tr, y_val = train_test_split(
        train,
        target,
        test_size=0.2,
        random_state=0
    )
    
    # 모델 학습
    from sklearn.ensemble import RandomForestClassifier
    model = RandomForestClassifier(random_state=0)
    model.fit(X_tr, y_tr)
    pred = model.predict(X_val)
    
    # 모델 성능평가
    from sklearn.metrics import f1_score
    score = f1_score(y_val, pred, average='macro')
    print("F1 Score: ", score)
    
    # baseline F1 Score:  0.5535714285714286
    # one-hot  F1 Score:  0.8809523809523809
    # Label    F1 Score:  1.0
    
    # 모델 예측
    pred = model.predict(test)
    pd.DataFrame({
        'pred': pred
    }).to_csv('result.csv', index=False)
    
    pd.read_csv('result.csv')

python 머신러닝 빅데이터 pandas 빅데이터분석기사

답변 2

0

퇴근후딴짓

데이터가 쉬울 경우 이럴 수 있습니다.

코드에 문제가 없다면 제출하면 됩니다.

의심이 간다면 편법으로 아래와 같이 검증 사이즈를 수정해서 확인해볼 수 있습니다.

스코어가 내려간다면 코드에는 문제가 없습니다.

test_size=0.2 -> 수정해보기

 

단, 주의할 점!! 확인용입니다.

만약 0.6으로 해서 내려갔다고 그걸 그대로 제출하면 모델이 언더(과소적합)피팅 됩니다.

검증(test_size) 크기는 0.2 이하로 반드시 수정해 주세요



참고: 정식으로 확인하는 방법은 크로스 밸리데이션이라는 것이 있어요!

0

인프런 AI 인턴

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

질문해주신 내용을 바탕으로, 모델의 과적합에 관한 문제와 해결 방법을 요약해드리겠습니다.

과적합을 의심해야 하는 경우

  1. 정확도/성능 지표가 지나치게 높은 경우: 특히 F1 Score와 같이 양호한 성능 지표가 1.0에 근접하게 나오면, 이는 과적합(overfitting)을 의심해볼 징후가 됩니다. 일반적으로 분리 없이 테스트 셋에 대한 성능을 평가하는 것이 아닌, 검증 셋(validation set)에서의 결과이므로 더욱 주의해야 합니다.

  2. 데이터 샘플의 과도한 연관성: 학습 데이터와 검증 데이터 사이에 고유한 정보를 공유하고 있거나, 학습 데이터에 테스트 레이블이 포함된 경우일 수 있습니다.

실제로, 과적합(overfitting)은 모델이 훈련 데이터에 너무 집중하여, 일반화 성능이 저하되는 상황을 말합니다.

해결 방법

  1. 데이터 처리 확인: LabelEncoderOne-hot encoding 시 오히려 클래스의 고유한 레이블이 과적합을 유발할 수 있습니다.

    • LabelEncoder는 데이터에 값의 순서를 부여해 의도치 않은 영향을 줄 수 있으니 실제로 순서가 의미 없는 데이터를 다룰 경우 One-hot encoding을 권장드립니다.
  2. 모델 복잡도 감소: RandomForest와 같은 앙상블 기법은 과적합에 비교적 강하지만, 여전히 학습 데이터에 과도하게 최적화되지 않도록 하이퍼파라미터 (max_depth, min_samples_split 등)를 조정하는 것이 유용할 수 있습니다.

  3. 데이터셋 재검토: 학습 및 검증 데이터셋 분리 시에는 문제가 없는지 꼼꼼히 체크해야 합니다. 데이터 분리가 독립적이고 공정한지 다시 한번 확인해보세요.

관련된 토픽이 있는 곳:
- 작업형2 모의문제1 오류 해결: 이 관련 게시물에서 유사한 과적합 문제와 해결 방안을 확인할 수 있습니다.

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

대응표본검정 레빈

0

13

2

단일표본검정 문제 유형

0

16

2

[작업형 3] 6~7. 카이제곱 검정

0

15

2

9회 작업형3 문제 1-1

0

19

2

최종답안 계산 방식 질문

0

14

1

시험 치기 전 급하게 질문 사항

0

24

2

유형3

0

23

2

작업형 2 연습문제 섹션 3

0

17

2

11 기출문제 ipynb파일

0

21

2

작업형 3 유형

0

21

2

11회 기출 유형(작업형1) 2번 정답

0

18

2

f1 score 질문

0

19

2

10회 작업형 2 인코딩 질의

0

16

2

53번 강의에서 갑자기 수업노트가 없어졌습니다.

0

21

2

28:19 roc_auc이유

0

20

2

수강연장문의

0

23

2

전체적인 머신러닝 순서

0

24

2

빅분기 실기 유형2질문

0

26

1

ID 전처리 이유

0

31

2

데이터제공

0

33

2

예시문제 작업형3 꼬리질문2번

0

22

1

데이터 개수를 구할 때, len과 value_counts 차이

0

28

2

작업형 2 제출방

0

22

2

인코딩 스케일링 순서

0

24

2