인프런 커뮤니티 질문&답변
8회 작업형2 코딩방법
해결된 질문
작성
·
29
0
저는 문제를 보고 9회차의 작업형2 방식과 동일하게 아래와 같이 했는데요
이렇게 해도 되나요?
drop와 레이블인코딩을 하지 않았을때
값이 10정도 차이가 나서 질문 드립니다!
# 라이브러리 및 데이터 불러오기
import pandas as pd
train = pd.read_csv("churn_train.csv")
test = pd.read_csv("churn_test.csv")
target = train.pop('TotalCharges')
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)
#랜덤포레스트
from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(random_state=0)
rf.fit(X_tr, y_tr)
pred = rf.predict(X_val)
from sklearn.metrics import mean_absolute_error
print(mean_absolute_error(y_val, pred))
# LightGBM
import lightgbm as lgb
lg = lgb.LGBMRegressor(random_state=0, verbose=-1)
lg.fit(X_tr, y_tr)
pred = lg.predict(X_val)
print(mean_absolute_error(y_val, pred))
답변 2
0
네, 코드에 문제 문제없습니다. 10 차이는 큰 차이 아니에요 🙂
아마 랜덤포레스트 모델의 random_state 값만 변경해봐도 그렇게 차이날거에요~
정확하게 말하긴 어렵지만
평가지표 앞자리가 변경될 정도?
대략 +- 10%이상 차이가 나면 다시 한번 살펴볼 필요가 있어요
화이팅!!
0
안녕하세요, 인프런 AI 인턴입니다. 상은님.
작성하신 코드를 살펴보면, RandomForestRegressor 와 LGBMRegressor 를 사용하여 예측하고 mean_absolute_error 로 평가하신 과정이 적절하게 이루어진 것 같습니다. 두 모델 간의 평가 결과를 비교하고, 더 나은 성능을 보이는 모델을 선택하는 방식은 공통적인 접근 방식 중 하나입니다.
여기서 drop 과 레이블 인코딩 을 사용하지 않고도 원핫 인코딩으로 범주형 데이터를 처리한 점이 눈에 띕니다. 원핫 인코딩은 범주형 데이터의 특성상 모든 범주의 유일한 표현을 허용하여, 같은 인코딩을 가진 train과 test 데이터 세트에서 효과적으로 작동합니다. 그러나 drop을 통해 불필요한 변수를 제거하거나 레이블 인코딩을 사용하여 데이터의 차원을 줄이는 것 역시 성능 향상에 도움이 될 수 있음을 유념하시길 바랍니다.
각 방식마다의 미세한 성능 차이(예: 예측 값이 10 정도 차이)도 데이터의 스케일, 카테고리 수 등에 의해 차이가 발생할 수 있으며, 그것이 언제나 최적의 결과를 보장하지는 않습니다. 차이를 주는 요소들을 파악하고, 검증 과정을 통해 데이터를 정제하는 과정이 중요합니다.
관련 질문과 자세한 설명은 다음 링크를 참조하시면 도움이 될 것입니다:
- 예시문제 작업형2 코드 질문: 원핫 인코딩과 모델 비교 방법의 효과를 설명합니다.
- 작업형 2유형 코드 점검 한번만 부탁드립니다..: 데이터 전처리 방법과 기초적인 코드 점검을 다룹니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





