我将CSV文件导入Python,然后使用x和y值执行最小二乘回归。到目前为止,我的计划:
我无法找到斜率的分子:
总和((Xi-X avg)*(Yi-Y avg))
我使用嵌套的for循环但是我的m_num(斜率分子)得到的结果不正确。
def compute_numerator(x_list, y_list, x_avg, y_avg):
m_num = 0
xi = []
yi = []
multiples = []
xi = [(x - x_avg) for x in x_list]
yi = [(y - y_avg) for y in y_list]
for x in xi:
for y in yi:
multiples = [x * y]
m_num = sum(multiples)
print(m_num)
return m_num
我需要m_num来返回(X - X的平均值)*(Y - Y的平均值)的所有值的总和
欢迎任何建议或批评!努力学习并获得良好的编程习惯。谢谢你的时间!
答案 0 :(得分:2)
如果您希望x_list
中的每个(x,y)值,y_list
相互配对,则可行:
sum((x-x_avg)*(y-y_avg) for x, y in zip(x_list, y_list))
你的问题是你没有将它们配对,而是将每个x值与所有y值相加,如下所示:
sum((x-x_avg)*(y-y_avg) for x, y in x_list for y in y_list)