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

goodgail2247님의 프로필 이미지

작성한 질문수

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

8회 작업형2 질문

해결된 질문

24.06.24 10:21 작성

·

242

·

수정됨

0

안녕하세요.

8회 작업형 2 관련해서 회귀문제라서

1.수치형 변수에 대해 minmaxscaler

2.범주형 변수에 대해 원핫인코딩 후

3.RandomForestRegressor(random_state=0) 학습결과를 제출했는데

적합한 모델로 돌린것인지 궁금합니다

random_state=0 미작성시 mae값이 더 좋았는데 다시 생각해보니 에러값이라 작을 수록 좋은데 헷갈려서 '0' 적용한 값으로 제출했네요

 

결과 제출 시에는

test 데이터 행 개수 2064개 동일한것은 확인하였고

sklearn.metrics import mae 적용한값이 0.0000*** 소수점으로 출력된것으로 기억하는데

다른 분들 93,94는 아니었던 것 같아서 이런경우에는 오답처리되는 것인지 문의드립니다;;

답변 2

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

2024. 06. 24. 10:54

혹시 수치형 변수에 대해 minmaxscaler이 타겟도 적용한건 아니죠?

target 미리 분리했나요?

mae값이 매우 작은 것을 봐서 이부분이 의심됩니다. 🥲

goodgail2247님의 프로필 이미지
goodgail2247
질문자

2024. 06. 24. 13:27

  1. 정확하게는 기억이 안나지만 ㅠ 아래와 같이

     

    1. cols= ['a','b','c' 등 수치형 변수 직접 지정] 한 뒤에

      1. train[cols]= scaler.fit_transform(train[cols])

      2. test[cols]= scaler.transform(test[cols]) 했을 때 에러없이 진행된 것으로 보아

      pop 작업을 minmaxscaler 이전에 진행한것으로 생각됩니다만

    2. 만약, 스케일러/원핫인코딩 작업 이후에 타겟을 pop 했다면 오답일까요?

     

     

     

     

     

     

  1. 샘플코드로 제출한 코드 다시 작성해보면 아래와 같은데 잘못된 부분이 있는지 궁금합니다.

    import pandas as pd
    train = pd.read_csv("train.csv")
    test = pd.read_csv("test.csv")
    
    # target = Segmentation 
    #  #   Column           Non-Null Count  Dtype  
    # ---  ------           --------------  -----  
    #  0   ID               6665 non-null   int64  
    #  1   Gender           6665 non-null   object 
    #  2   Ever_Married     6665 non-null   object 
    #  3   Age              6665 non-null   int64  
    #  4   Graduated        6665 non-null   object 
    #  5   Profession       6665 non-null   object 
    #  6   Work_Experience  6665 non-null   float64
    #  7   Spending_Score   6665 non-null   object 
    #  8   Family_Size      6665 non-null   float64
    #  9   Var_1            6665 non-null   object 
    #  10  Segmentation     6665 non-null   int64  
    
    # train.head()
    # test.head()
    
    # train.shape #(6665, 11)
    # test.shape #(2154, 10)
    
    # train.info()
    # test.info()
    
    target = train.pop('Segmentation')
    cols = ['ID','Age','Work_Experience','Family_Size'] #수치형만 골라서 직접 기입
    
    from sklearn.preprocessing import MinMaxScaler
    scaler = MinMaxScaler()
    train[cols] = scaler.fit_transform(train[cols])
    test[cols] = scaler.fit_transform(test[cols])
    
    train = pd.get_dummies(train)
    test = pd.get_dummies(test)
    
    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 RandomForestRegressor
    model = RandomForestRegressor(random_state=0)
    model.fit(x_tr, y_tr)
    pred = model.predict(x_val)
    # pred = model.predict(test) #최종 제출시에 활성화
    
    from sklearn.metrics import mean_absolute_error
    print(mean_absolute_error(y_val,pred)) # 0.7732033008252062
    
    
    
    

     

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

2024. 06. 25. 10:50

  1. 네 이 코드는 큰 문제가 없어 보입니다.

  2. 타겟값이 10이 었는데 스케일링으로 0.01로 만들었다면 예측값도 0.01로 나오기 때문에 점수를 받기 어렵습니다. csv결과를 보셨나요? 1이하 소수점 형태였나요? 아니면 train과 비슷한 수치였나요?

  3. 아래 코드는 target을 먼저 분리 했네요! 그런데 csv를 생성하는 코드가 없네요?

csv 생성한 것이 맞을까요?

goodgail2247님의 프로필 이미지
goodgail2247
질문자

2024. 06. 25. 10:56

답변 감사드립니다.

1이하 소수점 형태였던 것으로 기억하고, 소수점은 굳이 정수형 변환 필요없다고 하셔서 그대로 제출했습니다.

본 시험에서는 csv 파일 생성하여 read로 확인 후 제출하였습니다.

pred 가 1이하 소수점이었다면 오답 0점 처리일까요ㅜㅜ

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

2024. 06. 25. 11:01

1이하의 소수점이 모든 예측값이면 아쉽지만 잘못 처리되었어요! 😭

3번 코드면 전체가 1이하의 소수점이 나오진 않는 코드입니다

0

인프런 AI 인턴님의 프로필 이미지

2024. 06. 24. 10:26

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

goodgail2247님의 질문과 관련하여, 회귀 문제에 대한 수치형 변수의 MinMaxScaler 적용, 범주형 변수의 원핫인코딩RandomForestRegressor로 학습한 것이 적합한 접근인지, 그리고 제출한 결과의 평가 지표가 낮은 수치임에도 불구하고 오답 처리되는지 여부에 대한 질문입니다.

질문과 유사한 상황에 대한 답변이 있는지 기존 답변을 살펴봤습니다. 그 결과는 다음과 같습니다:

  1. 모델 학습 접근의 적합성:

    • 작업형 2 시험에서 수치형 변수에 MinMaxScaler를 적용하고, 범주형 변수에 원핫인코딩을 진행한 후 RandomForestRegressor로 모델을 학습시키는 접근은 일반적으로 적절합니다. 이에 대한 기존 답변은 구체적인 내용을 다루지 않기 때문에, 직접적으로 해당 상황을 해결하는 기록은 찾을 수 없었습니다.
  2. 결과의 평가 지표에 대한 적합성 및 오답 처리 여부:

    • 평가 지표(MAE)가 낮은 수치로 출력되는 것은 모델의 성능이 매우 높다는 의미일 수 있습니다. 다만, 너무 낮은 값이 실제로 예상치와 완벽하게 일치하는 상황을 나타내는 것이 아닐 수 있습니다. 특히, MAE 값에 대한 임계치가 언급된 바는 없으므로, 일정 수준 이상의 정확도나 오차를 넘어서는지는 시험의 세부 지침이나 평가 기준에 따라 다를 수 있습니다. 3회 빅데이터 분석기사 실기(작업형2) 질문에서는 변수 스케일링 선택의 재량과 모델 선택 과정의 유연성에 대해 언급되어 있지만, 평가 지표에 대한 구체적인 기준은 명시되어 있지 않습니다.

야간 상태에서의 MAE 값에 대한 언급은 있지만, 특정 평가 지표 값이 낮을 때 오답 처리되는지에 대한 직접적인 답변은 제공되지 않았습니다. 따라서, 구체적인 답변이 필요하다면 추가적인 정보가 제공될 필요가 있어 보입니다.

이에 따라, 실제 시험의 평가 기준이나 접근법에 대해 더욱 구체적인 가이드를 얻고자 한다면, 해당 강의의 질문&답변 섹션을 통해 더 자세한 질문을 남기시거나, 빅데이터 분석기사 실기와 관련된 공식 자료를 참고하시는 것을 권장드립니다.

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