本篇文章2286字,读完约6分钟
机器的心
从medium中选择
作者:安卓ye
机器的心被编译
机器的心
杀鸡用牛刀,我们用机器学习的方法计算圆的面积。
每个人一问圆的面积是多少,他们就说不是r2。 是吗,但是如果你问他们为什么,他们可能不知道。
这是因为圆的面积式的说明经常不直观、不满意、充满积分等高级数学概念。
参考统计学习和机器学习的核心原理,可以用蒙特卡洛模拟和多项式/二次回归建立基于计算的做法,找到圆的面积公式。
为了避免任何数学运算得到圆的面积,采用了蒙特卡洛法。 从探究不规则形状的面积到预测股票市场,都采用了蒙特卡洛法。 这种方法的中心思想是引入随机性,测量来自系统的反馈,不知道系统原理就能得到比较有效的消息。
使用蒙特卡洛近似圆的面积时,我们的老师制作了一点随机坐标点( x1,x2 ),这两个方向的坐标都绘制了从负半径值到正半径值的均匀分布。 我们在圆里放250,000个这样的坐标点。 如中心极限定理(或数定律)所述,研究所使用的真正随机取样点越多,得到的结果越正确。
对于圆内的每个点,可以引入圆内收敛点数的计数变量。 投入所有的随机点后,圆内的点数除以总点数(在本研究中为250,000 )的值表示正方形内的圆的面积所占的点数。 这个正方形的边长是圆半径的两倍。 因为这个正方形的面积是4r2。 属性。 其中r是圆的半径。 4r2; 乘以迄今为止得到的分数,得到了圆的面积。 通过蒙特卡洛法,无需数学公式就可以非常接近圆的真正面积。
道理很简单,结果几乎完全正确!
如果给定半径r,可以找到任意圆的面积,但目前还没有总结圆的公式。 为了找到表达式,需要半径,需要创建并建模一个二次方程来输出面积。 为了正确拟合方程,需要收集每个半径的蒙特卡罗近似面积的数据。
import numpy as np
fromtqdmimporttqdm # justaprogressbarindicator
# numberofrandomizedpointstogenerateforeachapproximation
num_points = 250_000
# liststostoretheradiusanditscorrespondingareaapproximation
radii = []
areas = []
# foreach of the 500 equallyspacedvaluesbetween1and 100 inclusive :
forradiusintqdm ( NP.linspace ( 1,100,500 ) ) :
# acounterforthenumberofpointsinthecircle
in_circle = 0
for i in range(num_points ) :
# generateanxandycoordinatefromauniformdistributionboundedbyatangentbox
xcoor = NP.Random.uniform (-radius,Radius )
yco or = NP.Random.uniform (-radius,Radius )
#if the point is inside the circle,add one to in_circle
if xcoor**2 + ycoor**2 <; radius**2:
in_circle += 1
# getthefractionofthepointsthatwereinsidethecircle
area_frac = in_circle/num_points
# appendtheapproximatedareaandtheradius
areas.append ( area _ frac * (4* ( radius * *2) ) )
radii.append(radius )
下一步是写拟合数据的二次项模型(回归模型),y =ax⊃2; 我是。 可以在图形中验证数据是二级项而不是三级或四级多项式。 基本上,这是基本的机器学习问题。 这是为了进一步回顾基本用语。
模型参数:自动调整模型,找到最佳参数。 在这种情况下,参数是a。 如果有n个参数,则此模型称为n维。 我们采用的最基本的模型是一维,但分类图像的深度神经网络可能具有数百万的维度。
损失函数:损失函数判断现在的模拟状况,为了使损失函数最小化,想找到能得到最低误差度的参数集。 例如,如果某个参数值j的损失函数值是3,参数值k的损失函数值是2,则应该选择参数值k。
平均绝对误差( mae ) :容易采用,容易理解,因此采用损失函数/错误度量。 给出当前参数( a )和模型的预测值,但平均绝对误差意味着预测值和真值的平均差有多大,低的mae意味着模型适合数据。
学习率:为了优化参数,模型在特定的“方向”上逐渐调整参数。 我们现在的模型只优化了一个参数( a ),所以这只需要决定在一维平面上增加或减少参数值即可(任何变化都会产生低损失函数)。 。 另外,模型调整过程中的移动量称为学习率。 所谓高学习速度,模型有可能在短时间内得到有效的参数集,但不能保证其精度,在以低学习率得到非常好的参数的同时,具有高精度,唯一的东西需要大量的训练时间
这些变量可以帮助您构建非常基本、简单的程序来匹配这些数据。
将参数coef(a )初始化为0.1。
每次训练周期迭代:
向coef提出两个路径的coef+lr和coef-lr。 其中lr是学习率。
对使用coef=coef+lr的模型和使用coef=coef-lr的模型判定平均绝对误差。
使coef等于coef+lr和coef-lr中平均绝对误差值小的数字。
通过反复优化平均绝对误差,模型最终收敛到“最佳”的coef值(可以将平均绝对误差减少到最小)。 这种想法是机器学习的核心原理,通过反复估计、判断和修正,计算机可以“打磨”最佳的参数集。
coef = 0.1 # initialcoefficientvalue
learning _ rate = 0.00001 # howfastthemodel ' learns '
iterations = 100000 # howmanytimeswewantthemodelto ' practiceandcorrect '
foriintqdm (范围( iterations ) ):# note-tqdmisjustaprogressbar
# proposetwopathforthecoefficient :
up _ coef = coef + learning _ rate # move up
down _ coef = coef-learning _ rate # or move down
# storethepredictionsforamodelusingparametersup _ coefanddown _ coef
up_pred = []
down_pred = []
# foreachradiusvalueinthepreviouslycreatedlistradii :
for r in radii :
# appendthemodelusingup _ coef ' sand down _ coef ' s prediction ( a * r ^2)
up_pred.append(up_coef*(r**2) )
down _ pred.append ( down _ coef * ( r * *2) )
# findthemae.bothareconvertedtonumpyarraysforeasyoperation。
up _ coef _ Mae = NP.ABS ( NP.Array ( [ UP _ Pred ] )-NP.Array ( [ A
down _ coef _ Mae = NP.ABS ( NP.Array ( [ DWN _ Pred ] )-NP.Aray ( [
# ifmovingthecoefficientdownyieldsalower ( better ) Mae :
if down_coef_mae <; up_coef_mae :
#set it equal to down_coef
coef = down_coef
# otherwise ( movingthecoefficientupyieldsalower ( better ) orequalmae :
else :
#set it equal to up_coef
coef = up_coef
看看训练的coef值就知道等于π。
print ( str ( coef ) [:5 ] ) # firstfourdigitsofcoefficient ( decimalpointcountsasacharacter )
[output]: '3.141 '
当然,计算圆面积的公式是r2。 我是。 不用微积分的许多复杂的数学方法和其他说明,我们就可以找到那个公式,可以用蒙特卡洛模拟和二次回归找到值的方法。 如果采用这个想法的话就能找到计算圆面积的做法。 当然,是任何图形的面积计算公式。 椭圆,心形,二维乌龟的形状。 如果参数能证明其轮廓。
近年来,计算机开始接管许多复杂的高可变数学问题的处理,计算圆面积只是其简单的例子。 如果你想要更复杂、更有独创性的东西,当然是四色定理(每个没有飞地的地图可以在四色以下染色,相邻两个区域的颜色不同)。 这是计算机先生解释并被数学家广泛接受的第一个成果。
利用计算机,人类可以探索到迄今为止无法尝试的、极多的杂乱的数学行业。
原文链接: medium/swlh/finding-the-for-circle-area-without-using-any-math -。
机器心与aws联合开设在线公开课,在6次直播课程中熟悉amazon sagemaker各组件的采用方法,可以轻松进行机器学习。
6月2日20点,aws处理方案设计师尹振宇带来第三课,详细理解如何利用sagemaker operator简化kubernetes上的机器学习任务管理。
点击阅读原文或识别二维码,立即预约直播。
阅读原文。
原标题:“不使用数学方法,如何计算圆面积”
阅读原文。
来源:搜狐微门户
标题:热门:不用任何数学做法,怎么计算圆面积
地址:http://www.shwmhw.com/shxw/67207.html