인프런 커뮤니티 질문&답변

빅분기수강생님의 프로필 이미지

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

5-2 작업형2 모델&평가 부분에서 동일한 값 출력

해결된 질문

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) 로 했어야 하는데....