Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 寻找相关数据集的比例因子_Python_Numpy_Scipy_Interpolation_Data Fitting - Fatal编程技术网

Python 寻找相关数据集的比例因子

Python 寻找相关数据集的比例因子,python,numpy,scipy,interpolation,data-fitting,Python,Numpy,Scipy,Interpolation,Data Fitting,我有两个数据集,来自两个来源,输出一个信号,我想找出两者之间的因素。 它们在x和y上有不同的分辨率,而且一组比另一组噪音更大 下面给出了一个简单的近似值,尽管实际数据并不遵循易于拟合的多项式 import numpy as np import matplotlib.pyplot as plt datax1 = np.linspace(0,100,1000) datay1 = np.around(datax1,-1)**2 datax2 = np.linspace(0,100,80)+np.r

我有两个数据集,来自两个来源,输出一个信号,我想找出两者之间的因素。 它们在x和y上有不同的分辨率,而且一组比另一组噪音更大

下面给出了一个简单的近似值,尽管实际数据并不遵循易于拟合的多项式

import numpy as np
import matplotlib.pyplot as plt

datax1 = np.linspace(0,100,1000)
datay1 = np.around(datax1,-1)**2

datax2 = np.linspace(0,100,80)+np.random.normal(0,0.2,80)
datay2 = (datax2**2)*np.random.normal(5,0.5)+np.random.normal(0,500,80)

plt.title('Data 1 VS Data 2')
plt.plot(datax1,datay1,'b',label='Data 1')
plt.plot(datax2,datay2,'r',label='Data 2')            
plt.legend()
plt.savefig('img.png', bbox_inches='tight', dpi=72)

我需要自动找到这个因素,因为我有更多的数据集要分析,但是SciPy的
curve\u fit
不能很好地使用
interpolate
as

import scipy.optimize as opt
import scipy.interpolate as interp

def func(x,k):
    fun=interp(datax1,datay1*k)
    return fun(x)
 
print opt.curve_fit(func,datax2,datay2)
仅返回
TypeError:“module”对象在
fun


有没有办法用numpy或scipy实现这一点,或者我必须构建自己的最小二乘函数来找到数据的缩放比例?

这并不是说
curve\u fit
不能很好地处理
interpolate
,而是您试图像调用函数一样调用模块。不管曲线拟合如何,你知道怎么做插值吗?老实说,我找到的所有文档都使用插值,比如函数,例如示例和绘图,所以我想应该是这样的,我没有使用正确的子类,这就是为什么什么都不起作用。。。facepalm
scipy.interpolate
是包含所有插值内容的模块。您需要从scipy.interpolate import interp1d执行类似于
的操作并使用它。(假设
interp1d
是适合您的正确例程…还有其他例程。)是的,就是这样。谢谢。
curve\u fit
并不是因为
interpolate
不能很好地处理,而是您试图像函数一样调用模块。不管曲线拟合如何,你知道怎么做插值吗?老实说,我找到的所有文档都使用插值,比如函数,例如示例和绘图,所以我想应该是这样的,我没有使用正确的子类,这就是为什么什么都不起作用。。。facepalm
scipy.interpolate
是包含所有插值内容的模块。您需要从scipy.interpolate import interp1d执行类似于
的操作并使用它。(假设
interp1d
是您的正确程序……还有其他程序。)是的,就是这个。谢谢