赞
踩
前天的一次数据试验,由于没有搞懂Python中除法的性质,导致浪费了一个上午的时间在那里纠结,汗。。。
数据试验的背景是想研究一下如下函数变化的性质,并将其可视化
Y= (A-B)/(A+B)
初步的想法是利用Python产生随机数来进行模拟试验,首先固定“A+B”的值,如A+B=1000来尝试研究一下在B变化的情况下,Y和B的关系,其实这个关系非常简单,当A+B固定后,“A-B”可以表达为“A+B”-2B。很明显这个时候B和Y是一个简单的线性关系。理论上已经知道了结果了,开始尝试代码实现吧,哪知结果出乎预料。
这是什么鬼,如此之完美的逻辑回归分类函数?是不是让你想到了Sigmoid函数图像。
通过输出Y值,能看到除了0就是-10,这明显是除法数值被取整了呀,那问题到底出在那里呢?以前使用Python做运算的时候,并没有遇到类似的问题。难道又是因为数据维度的问题?尝试了各种随机数产生的方法,有时候会是线性函数,有时候就如上图。百思不得其解(请原谅一个刚刚学习编程的老年人的对语言的认知水平)
通过查询,原来Python的除法分为Ture除法和floor除法,在3.0版以前的Python中的除法跟数的类型相关,如果是两个整数相除,程序执行的是floor除法,自动将结果取整。如果运算中包含了浮点数,程序则执行true除法,会获得精确的除法结果。3.0以后的版本中的除法则不与参与除法的数据的类型相关,一律采用true除法。想要让3.0版以前的Python执行true除法,需要在做运
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。