강의

멘토링

로드맵

Inflearn brand logo image

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

이선희님의 프로필 이미지
이선희

작성한 질문수

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

5회 기출유형 (작업형2)

5회 기출 작업형2 코드 봐주시면 감사하겠습니다.

해결된 질문

작성

·

33

0

  • 혼자 작성해보고 결과값도 나온거같은데 문제없는 코드일지요~

    import pandas as pd
    train=pd.read_csv("train.csv")
    test=pd.read_csv("test.csv")
    #train.info(), test.info()
    #원핫인코딩(범주형을 수치형으로)
    target=train.pop("price")
    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=2022)
    
     #랜덤포레스트회귀?
    from sklearn.ensemble import RandomForestRegressor
    model=RandomForestRegressor(max_depth=7, random_state=2022)
    model.fit(X_tr, y_tr)
    pred=model.predict(X_val)
    pred
    # 모델성능평가
    from sklearn.metrics import root_mean_squared_error
    re=root_mean_squared_error(y_val, pred)
    re
    
    pred = model.predict(test)
    result=pd.DataFrame({
        "pred" : pred
        }
    )
    result.to_csv("55.csv", index=False)

답변 2

0

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

네 문제는 없는데 회귀일 경우 max_depth=7 보다 더 큰 값이 될 경우가 많아

하이퍼파라미터 튜닝은 하지 말고 준비하시죠:)

0

안녕하세요, 인프런 AI 인턴입니다. 이선희님의 질문에 답변드리겠습니다.

작성하신 코드를 보면 전반적으로 아주 잘 작성하셨습니다. 하지만 몇 가지 확인하고 수정이 필요한 부분이 있습니다:

  1. 모듈 임포트 오류:

    • from sklearn.metrics import root_mean_squared_error 부분은 root_mean_squared_error라는 함수가 존재하지 않기 때문에 오류가 발생합니다. 대신 mean_squared_error를 사용하여 RMSE를 구할 수 있습니다.
      
      from sklearn.metrics import mean_squared_error
      rmse = mean_squared_error(y_val, pred, squared=False)  # squared=False를 통해 RMSE를 얻음
      print(rmse)
      

  2. 데이터프레임 컬럼 불일치 가능성 처리:

    • 원핫인코딩 이후 train과 test 데이터의 컬럼이 일치하지 않는 경우가 발생할 수 있습니다. 이 경우에는 다음과 같이 train과 test를 합쳤다가 다시 나누는 방법을 사용할 수 있습니다.
      
      from sklearn.preprocessing import OneHotEncoder
      encoder = OneHotEncoder(handle_unknown='ignore', sparse=False)
      all_data = pd.concat([train, test], axis=0)
      all_encoded = pd.DataFrame(encoder.fit_transform(all_data))
      train_encoded = all_encoded.iloc[:train.shape[0]].reset_index(drop=True)
      test_encoded = all_encoded.iloc[train.shape[0]:].reset_index(drop=True)
      

  3. 결과 제출:

    • 코드에서 최종적으로 사용할 “55.csv”는 모델의 예측치를 담고 있으며, 이 부분도 정상이십니다. 하지만 예측 결과 파일을 만들면서 사용한 result 데이터프레임이 정확히 어떤 컬럼들로 이루어져 있는지, 확인 후 출력하시는 것이 좋습니다.

관련 질문과 해결 방법에 대한 게시글은 다음과 같습니다:
- 작업형 2 유형의 문제와 해결 방법

이 게시글에서는 컬럼 추출, 데이터 전처리, 모델 학습 및 평가에 대한 추가 정보를 얻을 수 있습니다. 시험 환경에서는 코드가 잘 작동하는지 여러 번 확인 후 제출하시는 것을 추천드립니다.

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

이선희님의 프로필 이미지
이선희

작성한 질문수

질문하기