文章目录
- 前言
- 一、梯度下降法是什么?
- 二、使用步骤
- 1.欧氏距离函数
- 2.求导函数
- 3.梯度下降函数
- 三.经纬度数据:
- 总结
前言
当得到10个及以上的以经纬度为坐标的点时,我们往往需要得到其中心点,但大多数算法都是很暴力的直接求算数平均,效果不佳,所以想到了梯度下降法,但是它的难点也是显而易见的,怎么规划步长?
算法的核心思想:得到的中心点是与各个点之间的距离和是最小的。
提示:以下是本篇文章正文内容,下面案例可供参考
一、梯度下降法是什么?
具体的,请参考这里,作者水平有限,就不多说了:
梯度下降算法原理讲解——机器学习_Arrow and Bullet-CSDN博客_梯度下降法
二、使用步骤
1.欧式距离函数
代码函数头如下(示例):(由于特殊原因,我不能直接给出源代码,(指针用的太垃圾了,容易误导比别人😂))
不过,你们可以参考一下python的源码梯度下降-5463. 服务中心的最佳位置_yangzijiangtou-CSDN博客_服务中心的最佳位置,
我的只有步长发生了变化:变成了0.01
2.求导函数
double* GetDeri(double x,double y,double *q[2],int len)
//参数含义与上同
3.梯度下降函数
double* GetMinDistSum(double *q[2],int len)
//参数含义与上同
//这里需要说明,要注意浮点数精度的问题,step不断除2,会从0.000001-》0.000000,这时候step,不是0,如果要退出程序,记得和10e-7比较。
//python中求绝对值是abs(),C语言对于浮点数是fabs(),注意哦。
三.经纬度数据:
[(120.022991,42.332668),(117,40.527075),(120.820795,39.084449),(118.470878,38.303049), (112.5,37.490659),(117.0,37.780937),(110.157332,36.967925),(112.5,36.019736), (114.842668,36.967925),(112.5,39.907371),(112.5,35.255533),(113.779452,36.546141), (115.86597,37.360651),(113.748282,38.376738),(115.150882,39.331714)]
说明:该数据由硕士学问论文中计算得出,下图是该论文封面:
总结
以上就是今天要讲的内容,本文仅仅简单介绍了梯度下降法的使用,读者可以对比者python版的,自行写出程序