어떻게 최적인가요?
회귀 계수를 구할 때 사용한 np.polyfit() 함수는 기울기와 절편을 최적으로 찾아줘요. 이때 최적화하는 값은 잔차 제곱합, 즉 RSS(residual sum of squares)입니다. 이 연습에서는 최적화 대상인 RSS를 기울기 매개변수 a에 대해 플로팅해 보려고 해요. 이를 위해, 절편은 최적화에서 구한 값으로 고정하고, RSS를 기울기에 대해 그려 보세요. 최소값은 어디에서 나오나요?
이 연습은 강의의 일부입니다
Python으로 하는 통계적 사고 (2부)
연습 안내
- RSS를 계산할 기울기 값을 지정하세요.
0에서0.1사이 구간에서200개의 점을 얻기 위해np.linspace()를 사용하세요. 예를 들어,0에서0.5사이 구간에서100개의 점을 얻으려면 다음과 같이 쓸 수 있어요:np.linspace(0, 0.5, 100). - 위에서 만든 배열과
np.empty_like()를 사용해 RSS를 담을 배열rss를 초기화하세요.empty_like()함수는 주어진 배열(여기서는a_vals)과 같은 모양과 타입의 새 배열을 반환해요. - 기울기에 대한 RSS 합을 계산하는
for루프를 작성하세요. 힌트: RSS는np.sum((y_data - a * x_data - b)**2)로 주어집니다. 지난 연습에서 계산한 변수b는 이미 네임스페이스에 있어요. 여기서fertility가y_data,illiteracy가x_data입니다. - RSS(
rss)를 기울기(a_vals)에 대해 플로팅하세요. - "Submit Answer"를 눌러 플롯을 확인하세요!
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Specify slopes to consider: a_vals
a_vals = ____
# Initialize sum of square of residuals: rss
rss = ____
# Compute sum of square of residuals for each value of a_vals
for i, a in enumerate(a_vals):
rss[i] = ____((____ - a*____ - b)**2)
# Plot the RSS
plt.plot(____, ____, '-')
plt.xlabel('slope (children per woman / percent illiterate)')
plt.ylabel('sum of square of residuals')
plt.show()