最优在哪里?
您用来获取回归参数的函数 np.polyfit() 会找到"最优"的斜率和截距。它优化的是残差平方和(residual sum of squares,RSS)。在本练习中,您将绘制被优化的函数:RSS 与斜率参数 a 的关系。具体做法是将截距固定为优化得到的值,然后绘制 RSS 随斜率变化的曲线。它的最小值出现在何处?
本练习是课程的一部分
Python 统计思维(第 2 部分)
练习说明
- 指定用于计算 RSS 的斜率取值。使用
np.linspace()在0与0.1的范围内获取200个点。例如,若要在0与0.5范围内获取100个点,可以这样使用np.linspace():np.linspace(0, 0.5, 100)。 - 使用
np.empty_like()和您上一步创建的数组来初始化用于存放 RSS 的数组rss。empty_like()会返回与给定数组(本题中为a_vals)形状和类型相同的新数组。 - 编写
for循环来计算不同斜率下的 RSS 之和。提示:RSS 的计算为np.sum((y_data - a * x_data - b)**2)。您在上一个练习中计算的变量b已经在当前命名空间中。此处,fertility是y_data,illiteracy是x_data。 - 绘制 RSS(
rss)与斜率(a_vals)的关系图。 - 点击 提交答案 查看图形!
交互式实操练习
通过完成这段示例代码来试试这个练习。
# 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()