작성
·
131
0
안녕하세요. 이번에 올라온 2유형 문제를 풀어보았는데요.
<작성한 코드>
import pandas as pd
train = pd.read_csv("data/customer_train.csv")
test = pd.read_csv("data/customer_test.csv")
# 사용자 코딩
pd.set_option('display.max_columns', None)
# 전처리
target = train.pop('총구매액')
train['환불금액'] = train['환불금액'].fillna(0)
test['환불금액'] = test['환불금액'].fillna(0)
# [선택2] 원핫 인코딩 (카테고리가 다르면 합쳐서 진행 필요함)
df = pd.concat([train, test])
df = pd.get_dummies(df)
# 다시 분리
train = df.iloc[:len(train)]
test = df.iloc[len(train):]
print(train.shape, test.shape)
# 검증용 데이터
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)
print(X_tr.shape, X_val.shape, y_tr.shape, y_val.shape)
# 모델 학습 및 평가
from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor()
model.fit(X_tr, y_tr)
pred = model.predict(X_val)
from sklearn.metrics import root_mean_squared_error
print("RMSE:",root_mean_squared_error(y_val, pred))
# 제출
pred = model.predict(test)
submit = pd.DataFrame({'pred': pred})
submit.to_csv('result.csv', index=False)
print(pd.read_csv('result.csv'))
결측치를 0으로 채우고 train,test 합쳐서 원핫인코딩 후 랜덤포레스트회귀 모델사용 RMSE 평가지표 값이 나왔는데 강사님 수치랑 너무 크게 차이가 나서요. 이렇게 많이 차이 나도 괜찮은건가요? 작을수록 좋은거이긴 하지만 강사님이랑 너무나 다른 값이 나와서 제가 작성한 코드와 화면 출력하여서 틀린부분이 있는지 문의 드립니다.
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. qnekqnek님께서 작성하신 코드에 대해 리뷰해 드리겠습니다.
qnekqnek님이 작성하신 코드에서 사용한 전처리 및 모델 학습 과정은 기본적으로 올바른 방향을 따르고 있습니다. 그러나, RMSE 값이 예상보다 크게 차이 나고 있다면, 다음과 같은 사항들을 점검해 보시는 것이 좋겠습니다.
데이터 분할 및 인코딩:
모델 및 유사데이터 설정:
RandomForestRegressor
에 random_state
를 추가하면 더욱 일관된 결과를 얻을 수 있습니다. 예를 들어: model = RandomForestRegressor(random_state=0)
평가지표 계산:
root_mean_squared_error
라는 함수명이 스크립트에 등장하지만, 실제로는 sklearn.metrics
에서 제공되지 않는 것으로 보입니다. RMSE를 계산하려면 mean_squared_error
함수를 사용할 수 있으며, 이를 제곱근으로 변환하면 됩니다. from sklearn.metrics import mean_squared_error
rmse = mean_squared_error(y_val, pred, squared=False)
print("RMSE:", rmse)
이와 같은 사항들을 점검해 보신 후에도 문제 해결이 어렵다면, 데이터 및 코드 전반을 다시 한번 살펴보시는 것을 추천드립니다.
추가적으로 비슷한 문제를 다룬 게시글을 추천 드립니다:
- 예시문제 작업형2 신버전
게시글에서는 기본적인 모델링을 포함해 다양한 범위의 머신러닝 활용 방법이 포함되어 있습니다. 질문자님의 코드와 유사한 코드를 참조하며 비교하시기 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
네 감사합니다 ^^
제가 하나 여쭤볼게 있는데요.
object형 컬럼만 단순 drop 후 평가(baseline)
label인코더 전처리 후 평가
원핫인코더 전처리 후 평가
이렇게 세가지로 학습시켜보고 제일 나은 평가지표로 선택해서 제출하면 되는거 맞는거죠? ^^