Wzideng 2023-05-09 20:08 采纳率: 66.7%
浏览 16

python实现最小二乘法_一元线性报错

python实现最小二乘法(一元线性)报错_心态爆炸啊

代码如下:

img

img

img

这里开始就出问题了

4.定义算法拟合函数,即把公式表示出来。

# 先把平均值给它求出来
def average(data):
    sum = 0
    num = len(data)
    for i in range(num):
        sum+=data[i]
        
    avg = sum/num
    return avg

# 开始手敲公式
def LeastSquareMutil(points):
    m = len(points)
    x_bar = average(points[:,0])
    
    
#     sum_yx = 0
#     sum_x2 = 0
#     sum_delta = 0
    
#     for i in range(m):
#         x = points[i, 0]
#         y = points[i, 1]
#         sum_yx += y * ( x - x_bar )
#         sum_x2 += x ** 2
#     # 根据公式计算w
#     w = sum_yx / ( sum_x2 - m * (x_bar**2) )
    
#     for i in range(m):
#         x = points[i, 0]
#         y = points[i, 1]
#         sum_delta += ( y - w * x )
#     b = sum_delta / m
    
    sum_yx=0
    sum_x2=0
    sum_y_xbar=0
    sum_y=0
    sum_x=0
    
    for i in range(m):
        x = points[:,0]# x表示每一行的第0号位元素
        y = points[:,1]# y表示每一行的第0号位元素
        #先求上半部分
        sum_yx+=(y*x)
        sum_y_xbar+=(y*x_bar)
        #再求下部分
        sum_x2+=(x**2)
    #出来循环之后,再优化调一下
    avg_m_sum_x2=sum_x2/m
    w=(sum_yx-sum_y_xbar)/(sum_x2-avg_m_sum_x2)
    
    #接下来计算b
    for i in range(m):
        x = points[:,0]# x表示每一行的第0号位元素
        y = points[:,1]# y表示每一行的第0号位元素
        sum_y+=y
        sum_x+=x
    #出来循环之后,再优化调一下
    avg_m_sum_wx = sum_x*w/m
    avg_m_sum_y = sum_y/m
    
    b=avg_m_sum_y-avg_m_sum_wx


    return w,b
    
    

img

img

到了第五部的时候可以看到输出的w,b以及cost都有一大推,每一个数的w,b,cost都给我显示出来了

没看到为啥啊,浅浅的学了点python = = ~,愣是没看懂。

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-05-09 22:34
    关注
    • 这篇博客: 逻辑回归与梯度下降策略之Python实现中的 3. 计算损失值cost 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 到这里数据算是已经准备完成,接下来我们就要根据参数计算损失,首先定义损失函数:
      在这里插入图片描述

      在这里插入图片描述
      损失函数代码:

      def cost(X, y, theta):
          left = np.multiply(-y, np.log(model(X, theta)))
          right = np.multiply(1 - y, np.log(1 - model(X, theta)))
          return np.sum(left - right) / (len(X))
      

      写完了损失函数,我们调用一下看看损失值:
      在这里插入图片描述
      我们现在也不用管这个损失值是大了还是小了,只要知道我们是能算出来的,公式是好用的就🆗了。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月9日

悬赏问题

  • ¥15 速帮,学校需要在外上班没空
  • ¥15 人在外地出差,速帮一点点
  • ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改
  • ¥15 Windows 系统cmd后提示“加载用户设置时遇到错误”
  • ¥50 vue router 动态路由问题
  • ¥15 关于#.net#的问题:End Function
  • ¥15 无法import pycausal
  • ¥15 VS2022创建MVC framework提示:预安装的程序包具有对缺少的注册表值的引用
  • ¥15 weditor无法连接模拟器Local server not started, start with?
  • ¥20 6-3 String类定义