python最小二乘法线性拟合,最小二乘法线性回归python

  python最小二乘法线性拟合,最小二乘法线性回归python

  核心代码将数组作为铭牌导入

  导入随机

  导入匹配

  effit _ line _ by _ ran sac(point _ list,sigma,iters=1000,P=0.99):

  使用随机抽样一致性算法算法对齐直线

  #迭代最大次数iters=1000

  #数据和模型公差希腊字母表中第十八个字母

  #获得正确模型的概率P=0.99

  #最佳模型的参数估计

  best_a=0#线性梯度

  best_b=0#直线切片

  n_total=0#内点数

  对于范围(ITERS):

  #随机选取两点求解模型

  sample _ index=随机。sample(range(len)point _ list,2))))))))))))))))))))))。

  x _ 1=点列表[样本索引[0] [0]

  y _ 1=点列表[样本索引[0] [1]

  x _ 2=点列表[样本索引[1] [0]

  y _ 2=点列表[样本索引[1] [1]

  如果x_2==x_1:

  继续

  求# y=ax b,b

  a=(y _ 2-y _ 1)/(x _ 2-x _ 1)))a=(y _ 2-y _ 1)

  b=y1-a * x1

  计算#内点数

  total_inlier=0

  对于索引新范围(len(point _ list)):

  y _ estimate=a * point _ list[index][0]b

  如果ABS(y _ estimate-point _ list[index][1])sigma:

  total_inlier=1

  #确定当前模型是否比以前估计的模型好

  if total_inlier n_total:

  iters=数学。对数(1-p)/数学。log)1-pow)total _ inlier/len)point _ list),2))

  n_total=total_inlier

  best_a=a

  best_b=b

  #确定当前模型是否适合一半以上的点

  if total _ inlierlen(point _ list)//2:

  布莱克

  返回最佳_a,最佳_b

  if __name__==__main__ :

  #测试

  点数=[ (1,3),5,11),8,18),9,22),10,19),19,37 ] ]

  a,b=fit_line_by_ransac(points,sigma=3)))))))))))))))))))))))。

  print(line:y=%s*x%s ) % (a,b)))))))))))))))))))))。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: