강의

멘토링

로드맵

Inflearn brand logo image

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

yeoun123님의 프로필 이미지
yeoun123

작성한 질문수

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

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

5회 기출문제 수업질문입니다

해결된 질문

작성

·

22

0

질문 여기다 드리면 되나요 샘 코드 한번만 봐주세요 오늘 강의 들어왔어요 ㅠㅠ 진작했어야했는데요 에러는 안났느데 답 수치가 달라서요

import pandas as pd

train=pd.read_csv("train.csv")

test=pd.read_csv("test.csv")

# print(train.info())

# print(test.info())

 

from sklearn.preprocessing import LabelEncoder

le= LabelEncoder()

cols= ("model", "transmission", "fuelType")

for col in cols:

le.fit(train[col])

train[col]= le.transform(train[col])

test[col]= le.transform(test[col])

from sklearn.model_selection import train_test_split

X=train.drop(columns=["fuelType", "price"])

y=train["price"]

X_train, X_test, y_train, y_test=train_test_split(X, y, test_size=0.2, random_state=20)

print(train.shape)

print(test.shape)

from sklearn.ensemble import RandomForestRegressor

rfr=RandomForestRegressor(n_estimators=400, max_depth=30, random_state=20)

rfr.fit(X_train, y_train)

pred1=rfr.predict(X_test)

print(pred1)

from sklearn.metrics import root_mean_squared_error

rmse= root_mean_squared_error(y_test, pred1)

print("rmse:", rmse)

test_X=test.drop(columns=["fuelType"])

pred2=rfr.predict(test_X)

pd.DataFrame({"pred":pred2}).to_csv("result.csv", index=False)

print(pd.read_csv("result.csv"))

답변 2

0

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

안녕하세요

코드가 문제가 많은데 피드백 할 상황이 아닌 것 같습니다.

새로운 시도보다는 알려드린 방식으로 부탁드리고

기출은 제일 아래쪽에 꿀팁섹션에 작업형2 한가지 방식으로 풀기로 기출 해결해 주세요!

 

1 하이퍼파라미터 튜닝

RandomForestRegressor 안에 random_state 빼곤 사용하지 마시죠! 잘못 사용하고 계세요

2 인코딩 다 하고나서 fuelType를 갑자기 삭제하셨어요 삭제한 이유가 있을까요?

3 최종 생성된 파일 형태도 이상합니다.

0

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

작성해주신 코드는 데이터 불러오기부터 전처리, 모델 학습 및 예측까지 잘 구성되어 있습니다. 하지만, 결과 수치가 예상과 다르게 나오는 문제는 모델의 성능 또는 데이터 전처리 과정에서 발생할 수 있는 여러 요인들 때문일 수 있습니다. 여러분이 경험하고 있는 문제를 해결하기 위해 몇 가지 확인해야 할 사항을 안내드립니다.

주의할 점 및 개선사항:

  1. 라벨 인코딩: fit_transform을 사용할 때 traintest 데이터 모두에서 fit을 하시면 안됩니다. fit은 학습 데이터에서만 하고 transform만 테스트 데이터에 적용해야 합니다. 그렇지 않으면 라벨 인코딩 결과가 일치하지 않을 수 있습니다.

    le.fit(train[col])
    train[col] = le.transform(train[col])
    test[col] = le.transform(test[col])
    
  2. 컬럼 드롭 시 주의사항: 훈련 데이터와 테스트 데이터에서 선택적으로 필요한 컬럼만을 제거해야 합니다. fuelType이나 price를 제거할 때, 이상이 없는지 확인해보세요.

  3. RMSE 계산: sklearn 버전에 따라 root_mean_squared_error 함수가 존재하지 않을 수 있습니다. RMSE는 직접 계산하거나 mean_squared_error를 활용하여 sqrt 함수를 통해 구해야 할 수 있습니다:

   from sklearn.metrics import mean_squared_error
   import numpy as np

   rmse = np.sqrt(mean_squared_error(y_test, pred1))
   print("rmse:", rmse)
  1. 모델 튜닝: RandomForestRegressor의 하이퍼파라미터(n_estimators, max_depth 등)는 데이터셋에 따라 최적의 값이 달라질 수 있습니다. 모델의 성능이 만족스럽지 않다면, 다양한 하이퍼파라미터 값을 탐색해보세요.

  2. 데이터 확인: 데이터셋의 분포와 특성을 다시 한번 확인해 보시길 권장드립니다. 특히 이상치나 결측치의 처리 여부가 결과에 영향을 미칠 수 있습니다.

  3. 파일 경로 확인: 데이터 읽기 및 쓰기 시에 파일 경로가 올바른지 확인하시기 바랍니다.

유사한 질문 참조

다음의 링크들은 RandomForestRegressor와 데이터 처리 관련 유사한 문제가 다루어진 게시글입니다:

위의 링크들을 참고하시며, 제가 제공한 조언이 도움이 되셨기를 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

yeoun123님의 프로필 이미지
yeoun123

작성한 질문수

질문하기