해결된 질문
작성
·
43
0
안녕하세요 퇴근후딴짓님
크게 다르게 하지 않은것 같은데 저는 랜덤포레스트 #821.0553076611657 이렇게 나왔는데
퇴근후딴짓님은 83636125.어쩌고 엄청 큰 숫자잖아요..
제 코드에 어떤 문제가 있나요??ㅠㅠ
#데이터전처리
target = train.pop('총구매액')
train['환불금액']=train['환불금액'].fillna(0)
test['환불금액']=train['환불금액'].fillna(0)
train = train.drop('주구매상품', axis=1)
test = test.drop('주구매상품', axis=1)
train = pd.get_dummies(train)
test= pd.get_dummies(test)
#분할
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)
X_tr.shape, X_val.shape, y_tr.shape, y_val.shape
#머신러닝
from sklearn.metrics import mean_squared_error
def rmse(y_true, y_pred):
return mean_squared_error(y_true, y_pred)**0.5
from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(random_state=0)
rf.fit(X_tr, y_tr)
pred = rf.predict(X_val)
print(rmse(y_val, pred)) #821.0553076611657
pred = rf.predict(test)
result = pd.DataFrame({
'pred':pred
})
result.to_csv("result.csv", index=False)
print(pd.read_csv("result.csv"))
답변 2
0
전혀 문제 없습니다.:)
제가 영상에 빠르게 자막처리 할게요
800대 점수가 나오는 것이 정상입니다.
작업형2가 새로 나오면서 주최측에서 안내 없이 데이터를 3번이나 변경하다보니 그사이 촬영이 되어 그렇습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 양지은님께서 작성하신 랜덤포레스트 모델 관련 질문에 답변드리겠습니다.
현재 말씀하신 RMSE 값 차이는 전처리 과정이나 데이터의 다른 부분에서 발생할 가능성이 높습니다. 코드의 주요 부분을 차근차근 검토해 보겠습니다.
결측치 처리:
데이터 프레임 처리:
test['환불금액']=train['환불금액'].fillna(0)
에서 ‘test’ 데이터셋에 ‘환불금액’의 결측치를 채울 때 train
이 아닌 test
데이터를 사용해야 합니다. test['환불금액']=test['환불금액'].fillna(0)
로 수정하세요.원핫 인코딩:
pd.get_dummies
를 잘 사용하셨습니다. 다만 train과 test가 같은 열을 가져야 하므로, 인코딩 후에 두 데이터프레임의 열 확인이 필요합니다.데이터 분할 오류:
train_test_split
분할 시 train target
에서 쉼표(,)가 빠져 있는 것으로 보입니다. train, target
으로 수정해야 합니다.평가지표:
rmse
는 잘 작성되어 있습니다. 이를 활용하여 정확히 RMSE를 출력하고 계신 것입니다.벡터와 미리보기:
이와 관련된 유사한 문제 해결 사례를 확인하고 싶으면, 아래 링크를 참조하세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.