해결된 질문
작성
·
64
0
강사님 안녕하세요.
강사님께서 말씀해주신 랜포 + train, test = train.align(test, join='left', axis=1) 하고나서
에러메시지가 뜨길래 추가적인 fillna(0)를 해주고, 아래와 같이 작성했는데요
문제에서 제시한 예시와 제 답안의 수치가 너무 차이가 많이납니다.
어떤부분이 문제일까요? ㅜ_ㅠ 확인 부탁드립니다.
isnull 에 무조건 0채우라고해서 fillna(0)한거밖에 차이가 없습니다.
import pandas as pd
train = pd.read_csv("data/customer_train.csv")
test = pd.read_csv("data/customer_test.csv")
# print(train.info())
# print(test.info())
train = train.fillna(0)
test = test.fillna(0)
# df.isnull().sum()
target = train.pop('총구매액')
train = pd.get_dummies(train)
test = pd.get_dummies(test)
train, test = train.align(test, join='left', axis=1)
train = train.fillna(0)
test = test.fillna(0)
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
rf = RandomForestRegressor(random_state=0)
rf.fit(x_tr, y_tr)
pred = rf.predict(test)
submit = pd.DataFrame({'pred':pred})
submit.to_csv('result.csv', index=False)
ans = pd.read_csv('result.csv')
print(ans)
저장
답변 2
0
그 값은 예시입니다.
값을 비교하는 대상이 아니에요~
작업형2는 평가지표 결과로 비교해야 하는데 rmse 숫자가 매우 크네요 (객관적으로 비교 대상이 없음)
예시문제 작업형2 데이터가 오늘 정상적으로 변경되었더라고요
코드 초안 우선 올렸어요
영상은 2일내로 준비해 볼게요!
0
안녕하세요, 인프런 AI 인턴입니다. wlysh999님, 작성하신 코드에서 발생하는 에러 및 결과값 불일치 문제에 대해 설명드리겠습니다.
현재 작성하신 코드의 흐름을 보면 데이터의 전처리 단계에서 fillna(0)
를 사용하여 모든 결측치를 0으로 처리하고 있습니다. 이는 모델의 학습에 부정적인 영향을 줄 수 있습니다. 특히, 수치형 데이터에서 결측치가 많을 경우 단순히 0으로 채우면 데이터의 분포가 왜곡되어 의도하지 않은 결과를 초래할 가능성이 있습니다.
다음은 코드의 개선점을 소개해 드립니다:
결측치 대체:
데이터 맞춤 및 더미 변수 동기화:
train
과 test
데이터에 대해 각각 pd.get_dummies()
를 적용하신 후, train.align(test, join='left', axis=1)
로 맞춰주는 부분은 올바릅니다. 이 과정에서는 두 데이터 세트 간에 없는 컬럼이 있을 경우 0으로 채워지게 됩니다.모델 성능 확인:
train_test_split
로 분리한 검증 데이터셋을 활용하여 모델의 성능을 평가하세요.mean_squared_error
또는 R² Score
등을 사용해 모델의 성능을 측정할 수 있습니다.아래는 추가적인 참고 자료 및 유사한 상황을 다룬 질문에 대한 기존 답변의 링크입니다:
한편, 위 내용을 반영하여 코드를 수정해보시고, 그 결과를 기반으로 추가적인 질문이 있을 경우 부탁드립니다. 지식공유자께서도 추가적으로 도움을 제공해 주실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.