Я пытаюсь построить среднеквадратичную ошибку для разных тета-значений.
Это мой df, называемый подсказками:
tips = array([ 1.01, 1.66, 3.5 , 3.31, 3.61, 4.71, 2. , 3.12, 1.96,
3.23, 1.71, 5. , 1.57, 3. , 3.02, 3.92, 1.67, 3.71,
3.5 , 3.35, 4.08, 2.75, 2.23, 7.58, 3.18, 2.34, 2. ,
2. , 4.3 , 3. , 1.45, 2.5 , 3. , 2.45, 3.27, 3.6 ,
2. , 3.07, 2.31, 5. , 2.24, 2.54, 3.06, 1.32, 5.6 ,
3. , 5. , 6. , 2.05, 3. , 2.5 , 2.6 , 5.2 , 1.56,
4.34, 3.51, 3. , 1.5 , 1.76, 6.73, 3.21, 2. , 1.98,
3.76, 2.64, 3.15, 2.47, 1. , 2.01, 2.09, 1.97, 3. ,
3.14, 5. , 2.2 , 1.25, 3.08, 4. , 3. , 2.71, 3. ,
3.4 , 1.83, 5. , 2.03, 5.17, 2. , 4. , 5.85, 3. ,
3. , 3.5 , 1. , 4.3 , 3.25, 4.73, 4. , 1.5 , 3. ,
1.5 , 2.5 , 3. , 2.5 , 3.48, 4.08, 1.64, 4.06, 4.29,
3.76, 4. , 3. , 1. , 4. , 2.55, 4. , 3.5 , 5.07,
1.5 , 1.8 , 2.92, 2.31, 1.68, 2.5 , 2. , 2.52, 4.2 ,
1.48, 2. , 2. , 2.18, 1.5 , 2.83, 1.5 , 2. , 3.25,
1.25, 2. , 2. , 2. , 2.75, 3.5 , 6.7 , 5. , 5. ,
2.3 , 1.5 , 1.36, 1.63, 1.73, 2. , 2.5 , 2. , 2.74,
2. , 2. , 5.14, 5. , 3.75, 2.61, 2. , 3.5 , 2.5 ,
2. , 2. , 3. , 3.48, 2.24, 4.5 , 1.61, 2. , 10. ,
3.16, 5.15, 3.18, 4. , 3.11, 2. , 2. , 4. , 3.55,
3.68, 5.65, 3.5 , 6.5 , 3. , 5. , 3.5 , 2. , 3.5 ,
4. , 1.5 , 4.19, 2.56, 2.02, 4. , 1.44, 2. , 5. ,
2. , 2. , 4. , 2.01, 2. , 2.5 , 4. , 3.23, 3.41,
3. , 2.03, 2.23, 2. , 5.16, 9. , 2.5 , 6.5 , 1.1 ,
3. , 1.5 , 1.44, 3.09, 2.2 , 3.48, 1.92, 3. , 1.58,
2.5 , 2. , 3. , 2.72, 2.88, 2. , 3. , 3.39, 1.47,
3. , 1.25, 1. , 1.17, 4.67, 5.92, 2. , 2. , 1.75,
3. ])
Это моя квадратичная функция потерь:
def squared_loss(y_obs, theta):
"""
Calculate the squared loss of the observed data and a summary statistic.
Parameters
------------
y_obs: an observed value
theta : some constant representing a summary statistic
Returns
------------
The squared loss between the observation and the summary statistic.
"""
return (y_obs - theta) ** 2
Это моя функция среднеквадратичной ошибки:
def mean_squared_error(theta, data):
return sum(squared_loss(data, theta)) / len(data)
Вот в чем проблема: в ячейке ниже постройте среднеквадратичную ошибку для разных значений тета. Обратите внимание, что заданы значения theta_values. Не забудьте пометить оси на графике. Не забудьте использовать переменную tip, которую мы определили ранее.
theta_values = np.linspace(0, 6, 100)
plt.plot(mean_squared_error(theta_values, tips))
Это дает мне следующее: ValueError: операнды не могут быть переданы вместе с формами (244,) (100,)
Если график правильный, наблюдаемая точка минимизации должна быть 3. Кто-нибудь знает, что я могу сделать, чтобы мой график появился? Я думал что-то вроде цикла for, но не совсем уверен.
Спасибо!
Редактировать: попытка 244 в theta_values, хотя theta_values должна быть задана и не трогаться.