我需要将一个线性方程拟合到一个数据帧上,并且根据行的拟合程度(R^2值),我需要删除数据帧的行。我用的是SciPy线性回归函数。我已经尝试了一些方法,但还没有找到一种方法,可以满足我的需要,比如:
slope, intercept, r_value, p_value, std_err = stats.linregress([df['p_rel',df['y_BET'])
r_sq = r_value ** 2
if r_sq < 0.995:
'''remove last row from dataframe and run linregress again. repeat this until r_sq >= 0.995 '''
您可以使用generator expression来创建迭代器 它可以遍历
linregress
调用序列。因为它是一个 一次通过迭代器,对linregress
的调用将延迟到必要时。你知道吗然后可以使用^{} 在生成器表达式上迭代,删除结果直到
R**2
值大于0.995:也可以将其包装到函数中:
为什么不把它放到函数中呢?你知道吗
这种递归肯定会结束:我们将回归两列(两个
n x 1
结构),并递归地将其更新为n-1, n-2, ..., 2
。它最迟在2
停止,因为两个2 x 1
结构上的回归保证R平方等于1(因此在if语句中求值为false)。你知道吗编辑:如果要在函数外使用结果(请参见注释),则此操作有效:
相关问题 更多 >
编程相关推荐