안녕하세요.
좋은 책과 명료한 강의도 해주시고, 더불어 질문 공간도 마련해 주셔서 감사합니다.
릿지 회귀 부분을 책에 내용대로 따라 하였고, alpah=0.1 일 때, 과대적합과 과소적합 사이의 균형값이 나온다는 것을 확인해보았습니다.
그런데, 하나의 입력값을 주었을 때 예측값이 어떻게 나오는지 보고자 다음 값을 주었는데
예측값이 마이너스 값으로 나왔습니다.
sample1 = np.array([10, 3, 1.5]).reshape(1, -1)
sample1_poly = poly.transform([[10, 3, 1.5]])
sample1_scaled = ss.transform(sample1_poly)
print(ridge.predict(sample1_scaled))
[-4.46486047]
입력값 [10, 3, 1.5] 는 농어 데이터 perch_full 에서 첫번째 두번째 사이의 값으로 하였습니다.
이번에는 농어데이터 전부에 대한 예측값을 출력하였습니다.
perch_full_poly = poly.transform(perch_full)
perch_full_scaled = ss.transform(perch_full_poly)
predict_weight = ridge.predict(perch_full_scaled)
print(predict_weight)
[ -14.8059787 20.76723368 33.76585006 49.7476322 63.32658428
80.48563269 82.99117158 89.5611224 89.34544044 88.69548007
119.43651478 117.3822914 122.07796041 131.96636386 132.69749351
128.09044325 134.98098285 131.49485187 139.40688721 138.79696946
154.59385631 142.54525003 135.44921061 159.00741944 185.66788099
169.07101278 193.03938732 178.55311344 204.06825102 225.90983978
308.19524706 245.534299 242.51331301 256.59569337 266.77379916
284.36544501 309.11090256 519.67073358 589.10585003 814.08584077
703.73370057 666.00390861 671.13534181 657.52567835 830.17391402
730.55570444 931.41992344 887.52374009 876.31931521 959.30814307
783.58108094 1028.29837571 971.77430435 1046.93631866 1128.57917491
1082.38188249]
첫번째 값이 마이너스로 예측했습니다.
원래의 농어 무게와 예측한 무게를 그래프로 그려보았습니다.
x_index = np.arange(predict_weight.size)
plt.plot(x_index, perch_weight, c='b')
plt.plot(x_index, predict_weight, c='r')
plt.ylabel('weight')
plt.show()
길이,높이,두께가 작은 농어에서 마이너스 무게가 예측되는 것을 해결하는 어떤 특별한 방법이 있을까요?