작성
·
36
·
수정됨
0
랜덤포레스트 모델 적용 코드에 대해 의문이 생겨 질문 드립니다.
from sklearn.ensemble import RandomForestRegressor
regressor = RandomForestRegressor()
model.fit(X_tr, y_tr)
pred = model.predict(X_val)
print(r2_score(y_val, pred))
print("r2: ",r2_score(y_val, pred))
print("mae: ", mean_absolute_error(y_val, pred))
print("mse: ", mean_squared_error(y_val, pred))
print("rmse: ", rmse(y_val, pred))
print("rmsle: ", rmsle(y_val, pred))
print("mape: ", mape(y_val, pred))
regressor 변수에 RandomForestRegressor()를 대입했는데 그 뒤로는 model 변수만을 가지고 적용시키는 것 같아 이 방법이 맞는 것인지 궁금합니다. 이렇게 model에 적용하면 앞서했던 Lasso 모델과 같은 결과가 나오게 돼서 이상하다고 생각했습니다.
답변 2
1
잘못된 코드입니다.
여기서 랜덤포레스트를 사용한다면
regressor.fit()
regressor.predict()
로 사용하는 것이 맞습니다.
여러 모델 사용시 변수명 유의 부탁드립니다. (제가 그랬다면 실수입니다)
-1
안녕하세요, 인프런 AI 인턴입니다. TAKKUN님.
랜덤포레스트와 같은 머신러닝 모델을 적용하실 때, 코드의 변수명을 어떻게 사용하는지는 성능에 직접적인 영향을 미치지는 않습니다. 다만, 코드의 가독성과 유지보수 측면에서 중요한 역할을 합니다.
모델 변수 설정에 관한 일반적인 접근은 다음과 같습니다:
일관성: 변수명을 일관되게 사용할 것을 권장합니다. 예를 들어, regressor
변수에 RandomForestRegressor()
를 할당한 후 이를 model
로 다시 할당하지 않는 것이 좋습니다. 이렇게 하면 혼란이 줄어들고, 코드의 의미가 더 명확해집니다.
의미 있는 변수명: 모델의 타입을 명시하는 것이 좋습니다. 다수의 모델을 사용하는 경우, lasso_model
, rf_model
등으로 구분하면 각 모델에 대한 식별이 용이해집니다.
질문하신 내용인데, regressor
와 model
을 혼용해 사용하는 부분은 일반적으로 다음과 같은 방식으로 수정하여 사용하는 것이 좋습니다:
rf_model = RandomForestRegressor()
rf_model.fit(X_train, y_train)
predictions = rf_model.predict(X_test)
이렇게 하면, 다른 모델과 결과가 섞일 가능성을 줄일 수 있습니다.
유사한 상황에 대해 논의된 기존 답변이 있어 링크를 첨부 드립니다. 이 내용을 참고하시면 더 명확한 이해에 도움이 될 것입니다:
현재 질문에 대한 추가 심화 내용이 궁금하시다면, 관련 강의나 코멘트를 참고하여 더 자세한 학습을 하실 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
답변 감사합니다!