请求帮助实现squared_errors函数以计算预测价格与实际价格的平方误差
搞定squared_errors函数的方案
嘿,我帮你梳理一下这个问题的解决思路,其实核心就是利用向量运算来高效计算每个样本的平方误差,不用写繁琐的循环~
首先,咱们明确需求:函数接收斜率、截距、房屋面积数组(shape (1000,1))和实际价格数组,要返回每个样本的**(预测价格-实际价格)²**组成的数组。预测价格的公式是 predicted_price = slope * surface + intercept,这个逻辑很清晰对吧?
实现代码
这里推荐用NumPy来处理数组运算,既简洁又高效,尤其适合1000个样本的规模:
import numpy as np def squared_errors(slope, intercept, surfaces, prices): # 先确保输入是NumPy数组(如果用户传的是列表也能兼容) surfaces = np.asarray(surfaces) prices = np.asarray(prices) # 用向量运算计算所有样本的预测价格,不用写for循环! predicted_prices = slope * surfaces + intercept # 计算每个样本的平方误差 squared_errors_arr = (predicted_prices - prices) ** 2 return squared_errors_arr
代码解释
- 向量运算:NumPy的广播机制会自动对数组里的每个元素执行运算,比如
slope * surfaces会把斜率和每个面积值相乘,完全不用手动遍历1000个样本,既省代码又快。 - 鲁棒性处理:用
np.asarray()把输入转成NumPy数组,就算用户传入的是Python列表也能正常工作。 - 返回结果:最终返回的
squared_errors_arr形状和输入的surfaces/prices一致,也就是(1000,1)的数组,每个元素对应一个样本的平方误差。
测试小例子
比如用几个简单的数值测试一下:
# 测试参数 slope = 2 intercept = 1 surfaces = np.array([[1], [2], [3]]) prices = np.array([[3], [5], [7]]) # 调用函数 errors = squared_errors(slope, intercept, surfaces, prices) print(errors) # 输出:[[0] # [0] # [0]]
这个例子里预测价格和实际价格完全匹配,所以平方误差都是0,符合预期~
如果之后你需要计算均方误差(MSE),只需要对返回的数组取均值就行:mse = np.mean(errors)
内容的提问来源于stack exchange,提问作者t0bster
相关产品推荐
相关产品推荐

