快速回归包

regressor的Python项目详细描述


回归因子

这是一个小库,它尝试快速运行简单线性回归 现代x86硬件。这使用矢量化操作来加速计算点 产品和手段。输入numpy数组需要是1D的32位浮点数组。在

因此,这比scipy.stats.linreagress,但只运行 在带AVX扩展的x86-64硬件上(截至2020年,大多数台式机和服务器)。在

安装

pip install regressor

用法

^{pr2}$

性能

下面的图表比较了 这个包裹和scipy.stats.linreagress,从包含10个元素的数组开始 多达1亿个元素的阵列。这是在一个2.6GHz的Skylake CPU上运行的。 一般来说,这个软件包在 所需时间scipy.stats.linreagress. 在

Performance

可靠性

此包的回归结果匹配scipy.stats.linreagress内部 4位小数(斜率、截距、r值、p值和标准误差)。 下面的图表通过比较betas、r值和 此软件包的p值与scipy.stats.linreagress. 这些都是随机使用的 在X和Y阵列之间具有不同相关性的采样值以评估 在广泛的P值范围内的可靠性。在

Reliability

我只能找到一种情况,这个包的行为与 scipy.stats.linreagress-当你用它自己回归一个小数组时,p值 自然很小。当再次倒退时,其自身略有增加 (例如array+1.2e-7),我们期望斜率和p值相同,但是截距 应按递增值上移。然而,p值可能会发散 由于浮点数的不精确性。scipy.stats.linreagress也会受到影响 但程度较低。散度只在某些输入下发生 随机数数组,在我的测试中大约有55%的运行,取决于 输入数组大小。下面是一些代码来演示这个问题:

>>>importnumpy>>>fromscipy.statsimportlinregress>>>fromregressorimportlinregressaslinreg2>>>a=numpy.array([0.49789444,0.12506859,0.75386035,0.025621228,0.00039564757,0.71248668,0.078348994,0.62318009,0.48770180],dtype=numpy.float32)>>>b=numpy.copy(a)>>>eps=numpy.finfo(numpy.float32).eps>>>linreg2(a,b)LinregressResult(slope=1.0,intercept=0.0,rvalue=1.0,pvalue=3.292585384803146e-70,stderr=0.0)>>>linreg2(a,b+eps)LinregressResult(slope=0.9999999999999959,intercept=9.271833784074701e-08,rvalue=0.9999999999999959,pvalue=1.4627920285341798e-50,stderr=3.425878486341894e-08)>>>linregress(a,b)LinregressResult(slope=1.0,intercept=0.0,rvalue=1.0,pvalue=3.292585384803146e-70,stderr=0.0)>>>linregress(a,b+eps)LinregressResult(slope=1.0,intercept=1.1920928955078125e-07,rvalue=1.0,pvalue=3.292585384803146e-70,stderr=0.0)

只有当输入数组至少有9个值(和)时才会发生这种行为 对于超过50个值的数组变得无关紧要,因为这些数组有p<; 1e-323)。只有输入值完全相关,即使 一个值稍有不同,则结果非常相似。再说一遍,这是 要演示一些代码:

>>>b[0]+=eps>>>linreg2(a,b)LinregressResult(slope=1.000000020527417,intercept=-7.537115487288304e-09,rvalue=0.9999999999999909,pvalue=2.37040745003888e-49,stderr=5.100092205240057e-08)>>>linreg2(a,b)LinregressResult(slope=1.0000000205274189,intercept=2.2265206844895857e-08,rvalue=0.9999999999999918,pvalue=1.6549532101768438e-49,stderr=4.844923917880737e-08)

忽略不同的截获,回归或scipy.stats.linreagress两者都是 错了,使用倍数的每股收益慢慢收敛,但步履跳跃。在

我不会处理更大的问题,因为它只会在 回归数组是相同的,但其中一个数组也通过添加标量进行了调整 所有条目。我看不到任何情况下会发生这种情况 目的。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JPA。Eclipselink没有为mySQL提供密码,但它应该提供   我的Servlet和@FormDataParam存在java问题   java将什么作为上下文参数传递到文件I/O方法中?   如果两个值相同,java无法找到其中一个单选按钮   java在变量和方法名中使用下划线   JavaSpringMVC单线程安全?   klazz类的java Arraylist(反射Api)   java如何在数字字符串中查找最频繁的数字?   JavaAPI设计:使数据更易于阅读与强制更多API调用   JavaHadoopMapReduceforGoogleWebGraph   java无法启动gauge API:Runner意外退出   java如何在bluemix上使用ibm工作负载调度器?   拉取一年中某一周特定日期的所有日期   java为什么是我的角节点。js应用程序将图像上传到S3� 邮递员正确上传时的符号?   在不使用任何第三方jar的情况下将文件从本地传输到linux系统(java代码)   java将现有文件夹复制到Eclipse工作区中新创建的项目中   Java中的regex RegExp帮助   当使用“系统”外观时,Java组合框setSelectedItem会出现故障   JavaASM:在类的方法中获取局部变量名和值