해결된 질문
작성
·
57
0
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요
먼저 유사한 질문이 있었는지 검색해보세요
이렇게 작성해도 감점 없을까요? 영상에 나온 rmse 값보다 훨씬 작습니다. (저는 rmse : 816.38 나옵니다)
# 2. 탐색적 분석 / 결측치 채우기 # 환불금액
# print(train.info())
# print(train.head(3))
# print(train.isnull().sum())
# print(test.isnull().sum())
a = int(train['환불금액'].mean())
# print(a)
train['환불금액'] = train['환불금액'].fillna(a)
test['환불금액'] = test['환불금액'].fillna(a)
train = train.drop('주구매상품',axis=1)
test = test.drop('주구매상품',axis=1)
# print(train.isnull().sum())
# print(test.isnull().sum())
# 3. 인코딩
target = train.pop('총구매액')
# print(target)
train = pd.get_dummies(train)
test = pd.get_dummies(test)
# print(train.info())
# print(test.info())
# 4. 분할
from sklearn.model_selection import train_test_split
x_t, x_v, y_t, y_v = train_test_split(train, target, test_size = 0.2, random_state = 0)
# 5. 학습
from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor(random_state = 0)
model.fit(x_t, y_t)
pred = model.predict(x_v)
# 6. 평가 - 816.38
from sklearn.metrics import root_mean_squared_error
rmse = root_mean_squared_error(y_v, pred)
print(rmse)
# 7. 예측
pred = model.predict(test)
# 8. 제출
submit = pd.DataFrame({'pred':pred})
submit.to_csv("result.csv", index=False)
result = pd.read_csv("result.csv")
print(result)
답변 2
1
0
안녕하세요, 인프런 AI 인턴입니다. tjwngml9110님의 질문에 답변드리겠습니다.
작성하신 코드를 살펴보니, 데이터 전처리 과정과 머신러닝 모델 학습 및 평가라는 측면에서 크게 문제는 없어 보입니다. 하지만 몇 가지 고려해볼 점이 있어 말씀드립니다.
결측치 처리 방법:
환불금액
의 평균을 사용하여 결측치를 처리하셨습니다. 이 방법은 나쁘지 않지만, 결측치가 많은 경우 평균 대신 중앙값을 사용하거나, 다른 피처들과의 관계를 고려한 방법도 고려해 볼 수 있습니다.특징 선택과 드롭:
모델 선택:
RandomForestRegressor
를 사용하셨는데, 이 모델은 일반적으로 다양한 데이터에 좋은 성능을 보여주지만, 데이터의 특성에 따라 다른 모델(e.g., GradientBoosting, XGBoost)도 고려해 볼 수 있습니다.모델 평가지표:
root_mean_squared_error
함수를 사용하는 부분에서 인식 오류가 있을 수 있습니다. sklearn.metrics
에서 제공하지 않는 함수로 보입니다. RMSE는 보통 mean_squared_error
를 사용하고 그 제곱근을 계산하여 얻습니다.from sklearn.metrics import mean_squared_error
rmse = mean_squared_error(y_v, pred, squared=False)
print("RMSE:", rmse)
기출문제 풀이와 예제 설명
이 포함된 유사한 게시글에서 도움을 받을 수 있습니다:현재 RMSE 값(816.38)이 강의에서 제시된 것과 차이가 있다는 부분은 전처리 과정이나 데이터 셋 자체 차이 때문일 가능성이 높습니다. 위에서 언급한 부분들을 점검하여 결과를 비교해 보시길 권장드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.