해결된 질문
작성
·
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님.
작성해주신 코드는 데이터 불러오기부터 전처리, 모델 학습 및 예측까지 잘 구성되어 있습니다. 하지만, 결과 수치가 예상과 다르게 나오는 문제는 모델의 성능 또는 데이터 전처리 과정에서 발생할 수 있는 여러 요인들 때문일 수 있습니다. 여러분이 경험하고 있는 문제를 해결하기 위해 몇 가지 확인해야 할 사항을 안내드립니다.
라벨 인코딩: fit_transform
을 사용할 때 train
과 test
데이터 모두에서 fit
을 하시면 안됩니다. fit
은 학습 데이터에서만 하고 transform
만 테스트 데이터에 적용해야 합니다. 그렇지 않으면 라벨 인코딩 결과가 일치하지 않을 수 있습니다.
le.fit(train[col])
train[col] = le.transform(train[col])
test[col] = le.transform(test[col])
컬럼 드롭 시 주의사항: 훈련 데이터와 테스트 데이터에서 선택적으로 필요한 컬럼만을 제거해야 합니다. fuelType
이나 price
를 제거할 때, 이상이 없는지 확인해보세요.
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)
모델 튜닝: RandomForestRegressor
의 하이퍼파라미터(n_estimators
, max_depth
등)는 데이터셋에 따라 최적의 값이 달라질 수 있습니다. 모델의 성능이 만족스럽지 않다면, 다양한 하이퍼파라미터 값을 탐색해보세요.
데이터 확인: 데이터셋의 분포와 특성을 다시 한번 확인해 보시길 권장드립니다. 특히 이상치나 결측치의 처리 여부가 결과에 영향을 미칠 수 있습니다.
파일 경로 확인: 데이터 읽기 및 쓰기 시에 파일 경로가 올바른지 확인하시기 바랍니다.
다음의 링크들은 RandomForestRegressor
와 데이터 처리 관련 유사한 문제가 다루어진 게시글입니다:
작업형 2유형 코드 점검: 각종 코드 구현 및 데이터 전처리 과정에서의 상세한 설명이 담겨있습니다.
예시문제 작업형2 코드 질문: 기초부터 탄탄히 쌓아가며 차근차근 문제를 개선하는 방법이 자세히 나와있습니다.
위의 링크들을 참고하시며, 제가 제공한 조언이 도움이 되셨기를 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.