해결된 질문
24.06.05 20:41 작성
·
88
·
수정됨
0
안녕하세요. 작업형 2 회귀모델 사용하고 평가지표로 모델 평가하는 부분에서 질문이 있어서 문의합니다
넘파이 없이 해보려고 아래처럼 간단하게 만들어봤는데요.
from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_error
# 릿지 모델
from sklearn.linear_model import Ridge
rd = Ridge(random_state=100)
rd.fit(X_tr,y_tr)
pred_rd = rd.predict(X_val)
mse = mean_squared_error(y_val,pred_rd) # rmse 간단 사용을 위해 우선 mse()를 변수 할당
rmse = mse ** 0.5 # 그런 다음 rmse 처리 방식에 맞는 변수 생성
print("r2:",r2_score(y_val,pred_rd))
print("mae:",mean_absolute_error(y_val,pred_rd))
print("mse:",mean_squared_error(y_val,pred_rd))
print("rmse:",rmse)
r2: 0.06396849293045404
mae: 75.39756630227993
mse: 62725.96352602316
rmse: 250.4515193126669
# 라쏘 모델
from sklearn.linear_model import Lasso
ls = Lasso(random_state=100)
rd.fit(X_tr,y_tr)
pred_ls = rd.predict(X_val)
mse = mean_squared_error(y_val,pred_ls)
rmse = mse ** 0.5
print("r2:",r2_score(y_val,pred_ls))
print("mae:",mean_absolute_error(y_val,pred_ls))
print("mse:",mean_squared_error(y_val,pred_ls))
print("rmse:",rmse)
r2: 0.06396849293045404
mae: 75.39756630227993
mse: 62725.96352602316
rmse: 250.4515193126669
선형회귀,XGB,랜덤포레스트 등은 결과값이 모델별로 각각 다르게 나왔는데
(랜덤포레스트의 결정계수 값이 제일 높아서 실습하면서 저도 랜덤포레스트를 적용했습니다)
릿지랑 라쏘 이 2가지 모델은 위에서 처럼 결과값 출력이 완전 동일하게 나와서.....
(rmse는 선형회귀를 제외한 나머지 4가지 전부 동일 값이 출력 되었습니다...이건 뭘 잘못한걸까요..?)
검증데이터 예측값 계산 변수 다 할당했고, 할당한 예측 변수를 각 평가 모델에 대입했는데... 왜 이런 결과가 나오는지, 뭔가 잘못한 부분이 있으니 값이 같게 나오는거 같은데... 어느 부분이 잘못 되었는지 알려주시면 감사하겠습니다.
답변 1
0
2024. 06. 05. 20:46
릿지랑 라쏘는 규제 알고리즘이 달라서 같은 값이 나올 수 없어요
라쏘 코드 잘 보시면 불러오긴 했지만 학습과 예측은 릿지 모델을 사용했네요!
2024. 06. 05. 23:59
아... ㅎㅎㅎ 왜 아까는 안 보였을까요... 감사합니다.
rd.fit(X_tr,y_tr)
pred_ls = rd.predict(X_val)
가 아니고
ls.fit(X_tr,y_tr)
pred_ls = ls.predict(X_val) 로 했어야 하는데....