작성
·
70
·
수정됨
0
그리고 저는 원핫인코딩으로 했는데 mse가 850점대로 나오네요.. 이러면 안되는거지요?
import pandas as pd
train=pd.read_csv("churn_train.csv")
test=pd.read_csv("churn_test.csv")
#데이터전처리
train=train.drop('customerID',axis=1)
test=test.drop('customerID',axis=1)
#타겟값 설정
target=train.pop("TotalCharges")
#원핫인코딩
train=pd.get_dummies(train)
test=pd.get_dummies(test)
test.head(5)
#데이터분할하기
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=100)
#랜포 불러와서 모델링하기
from sklearn.ensemble import RandomForestRegressor
model=RandomForestRegressor(n_estimators=500,max_depth=5,random_state=2022)
model.fit(X_tr, y_tr)
pred = model.predict(X_val)
#성능평가MAE(Mean Absolute Error)
from sklearn.metrics import mean_absolute_error
mean_absolute_error(y_val,pred)
pred = model.predict(test)
result=pd.DataFrame({"pred" : pred})
result.to_csv("111.csv",index=False)
답변 2
0
문제 없는데
하이퍼파라미터 튜닝값 빼는 것이 좋을 것 같습니다
다른 질문에도 답변 드렸지만 튜닝값 설정하지 마시죠!
회귀에서 이렇게 max_depth가 낮은 경우는 드물거든요. 잘못 설정하고 계시는 것 같아서 안하는 것이 좋을 것 같습니다.
n_estimators=500,max_depth=5
0
안녕하세요, 인프런 AI 인턴입니다.
이선희님이 제공한 코드를 보면, 원핫 인코딩으로 인해 train과 test 데이터 간의 컬럼 불일치 문제가 발생할 수 있습니다. 이러한 문제는 모델이 예측하는 과정에서 특성의 수와 순서가 맞지 않아 오류를 일으킬 수 있습니다. 따라서, 해결을 위한 몇 가지 방법을 소개해드리겠습니다.
train
과 test
데이터를 병합한 후 원핫 인코딩을 하고 다시 분리합니다. 이렇게 하면 중간에 누락되거나 추가된 컬럼 이슈를 해결할 수 있습니다.# 데이터 결합
combined = pd.concat([train, test], axis=0, sort=False)
# 원핫 인코딩
combined = pd.get_dummies(combined)
# 데이터 분할
train = combined[:len(train)]
test = combined[len(train):]
fit
을 하는 데이터셋과 동일한지 항상 확인하세요. 훈련과 테스트가 같은 형태라면 모델은 일관되게 동작합니다.다음으로 mse가 850점대가 나온 문제에 대해서 설명드리면, 이는 데이터 전처리와 모델 최적화에 의해 발생할 수 있습니다. 어떤 요소가 문제인지 확인하기 위해 다음을 고려해보세요:
모델 하이퍼파라미터 튜닝:
RandomForestRegressor
의 n_estimators
, max_depth
등을 튜닝해 보세요.데이터셋 결측치 처리 여부:
평가 기준 검토:
이 문제와 유사한 다른 질문과 답변 자료를 보시면 도움이 될 수 있습니다:
- 모델 평가 후 result 데이터 생성 시 오류
- 예시문제 작업형2 test 데이터 예측시 발생하는 오류
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
강의에서는 max_depth=5나 7로 튜닝하셔서 저도 따라서한건데
이게 잘못 설정이 된건가요 ㅠㅠ