我是Python的新手.我有一个数据集,我正在尝试使用numPy/sciPy来预测/推断未来的数据点.是否有一种简单的方法来提出适合我当前数据的数学函数(比如,正弦函数),然后我可以将新值传递给该函数以获得我的预测?
这就是我所拥有的,但我不认为它正在做我想要的:
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
def main():
y = [8.3, 8.3, 8.3, 8.3, 7.2, 7.8, 7.8, 8.3, 9.4, 10.6, 10.0, 10.6, 11.1, 12.8,
12.8, 12.8, 11.7, 10.6, 10.6, 10.0, 10.0, 8.9, 8.9, 8.3, 7.2, 6.7, 6.7, 6.7,
7.2, 8.3, 7.2, 10.6, 11.1, 11.7, 12.8, 13.3, 15.0, 15.6, 13.3, 15.0, 13.3,
11.7, 11.1, 10.0, 10.6, 9.4, 8.9, 8.3, 8.9, 6.7, 6.7, 6.0, 6.1, 8.3, 8.3,
10.6, 11.1, 11.1, 11.7, 12.2, 13.3, 14.4, …Run Code Online (Sandbox Code Playgroud) 我有一个pandas DataFrame,时间作为索引(1分钟Freq)和几列数据.有时数据包含NaN.如果是这样,我只想在间隙不超过5分钟的情况下进行插值.在这种情况下,这将是最多5个连续的NaN.数据可能如下所示(几个测试用例,显示了问题):
import numpy as np
import pandas as pd
from datetime import datetime
start = datetime(2014,2,21,14,50)
data = pd.DataFrame(index=[start + timedelta(minutes=1*x) for x in range(0, 8)],
data={'a': [123.5, np.NaN, 136.3, 164.3, 213.0, 164.3, 213.0, 221.1],
'b': [433.5, 523.2, 536.3, 464.3, 413.0, 164.3, 213.0, 221.1],
'c': [123.5, 132.3, 136.3, 164.3] + [np.NaN]*4,
'd': [np.NaN]*8,
'e': [np.NaN]*7 + [2330.3],
'f': [np.NaN]*4 + [2763.0, 2142.3, 2127.3, 2330.3],
'g': [2330.3] + [np.NaN]*7,
'h': [2330.3] + [np.NaN]*6 + [2777.7]})
Run Code Online (Sandbox Code Playgroud)
它看起来像这样:
In [147]: data
Out[147]: …Run Code Online (Sandbox Code Playgroud) 对于我的项目,我必须编写 C++ 代码,相当于 Matlab 的 ScatteredInterpolant() 函数。我的数据点是三维的分散数据。我可以使用 TetGen 库计算 Delaunay 四面体。我使用从 TetGen 和 Matlab 自己的 delaunay() 函数找到的四面体比较了插值结果,只要查询点位于凸包内,结果就相同。
在我的项目中,我必须使用线性外推法来外推凸包之外的点。我浏览了 Matlab 文档,它说“基于边界梯度的线性外推”。从我的文献调查中,我找不到很好的文档来说明线性外推如何使用边界梯度进行工作。如果您向我提供有关分散插值()的线性外推如何工作的见解,我将非常感激。
我查看了分散数据外推文档页面,其中写着“‘线性’外推方法基于凸包边界处梯度的最小二乘近似。它为凸包之外的查询点返回的值凸包基于边界处的值和梯度。” 为了验证,我编写了以下代码(2D数据):
clc;clear;close all;
x = [ -1 1 1 -1 0 ]; y = [ -1 -1 1 1 0 ];
v = x.^2 + y.^2;
tri = delaunay(x, y);
F = scatteredInterpolant(x(:), y(:), v(:), 'linear', 'linear');
[xq, yq] = meshgrid( -2 : 0.1 : 2 );
vq = F(xq, yq);
figure; plot(x, y, 'r*');hold on; tri = delaunay(x, …Run Code Online (Sandbox Code Playgroud) 我有几个包含许多 x 和 y 值的数据集。值少得多的示例如下所示:
data_set1:
x1 y1
--------- ---------
0 100
0.0100523 65.1077
0.0201047 64.0519
0.030157 63.0341
0.0402094 62.1309
0.0502617 61.3649
0.060314 60.8614
0.0703664 60.3555
0.0804187 59.7635
0.0904711 59.1787
Run Code Online (Sandbox Code Playgroud)
data_set2:
x2 y2
--------- ---------
0 100
0.01 66.119
0.02 64.4593
0.03 63.1377
0.04 62.0386
0.05 61.0943
0.06 60.2811
0.07 59.5603
0.08 58.8908
Run Code Online (Sandbox Code Playgroud)
所以这里(对于本例)我有两个包含 10 个 x 值和 y 值的数据集。y 值始终不同,但在某些情况下 x 值会相同,有时它们会不同 - 正如本例所示。虽然不是很多,但它们仍然是不同的。将这两个数据集绘制成图表会产生两条不同的曲线,我现在想绘制两条曲线的平均曲线。如果 x 值相同,我将只取 y 值的平均值并将它们与 x 值进行比较,但如上所述,它们有时不同,有时相同。有没有某种方法可以推断,或者类似的东西,这样我就可以对值进行平均(同样,对于许多数据集)而无需“只是猜测”或说“它们几乎相同,所以只需平均就可以了y 值”。外推法似乎是一种可行的方法,但我从未在 python 中使用过它,也许还有更好的方法来做到这一点?
我想根据第一张图中以下彩色点的浓度数据在xy平面上创建等高线图.我在每个高度都没有角点,所以我需要将浓度外推到xy平面的边缘(xlim = c(0,335),ylim = c(0,426)).
点的html文件可以在这里找到:https://leeds365-my.sharepoint.com/:u:/ r/personal /cenmk_leeds_ac_uk/Files/Files/HECOIRA /Chamber%20CO2%20Experiments/Sensors.html?csf = 1&E = HiX8fF
dput(df)
structure(list(Sensor = structure(c(11L, 12L, 13L, 14L, 15L,
16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L,
29L, 1L, 3L, 4L, 5L, 6L, 8L, 30L, 31L, 32L, 33L, 34L, 35L), .Label = c("N1",
"N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "Control", "A1",
"A10", "A11", "A12", "A13", "A14", "A15", "A16", "A17", "A18",
"A19", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", …Run Code Online (Sandbox Code Playgroud) 我正在使用 numpy 和 scipy 开发一个项目,我需要填写 nanvalues。目前我使用 scipy.interpolate.rbf,但它一直导致 python 崩溃,所以严重的 try/ except 甚至无法保存它。然而,运行几次后,如果中间有数据被所有nan包围,就像一座孤岛,它似乎可能会不断失败。有没有更好的解决方案,不会一直崩溃?
顺便说一句,这是我需要推断的大量数据。有时多达图像的一半(70x70,灰度),但它不需要是完美的。它是图像拼接程序的一部分,因此只要它与实际数据相似,它就可以工作。我尝试过用最近邻来填写nan,但结果相差太大。
编辑:
它似乎总是失败的形象。隔离此图像允许它在崩溃之前传递一次图像。

我至少使用版本 NumPy 1.8.0 和 SciPy 0.13.2。
我在大约120万次观测中运行了大约45,000个局部线性回归(基本上),所以我很感激一些帮助试图加快速度,因为我很不耐烦.
我基本上是在为一堆公司构建逐年工资合同 - 职能工资(给予公司,年份,职位的经验).
这是我正在使用的数据集(基本结构):
> wages
firm year position exp salary
1: 0007 1996 4 1 20029
2: 0007 1996 4 1 23502
3: 0007 1996 4 1 22105
4: 0007 1996 4 2 23124
5: 0007 1996 4 2 22700
---
1175141: 994 2012 5 2 47098
1175142: 994 2012 5 2 45488
1175143: 994 2012 5 2 47098
1175144: 994 2012 5 3 45488
1175145: 994 2012 5 3 47098
Run Code Online (Sandbox Code Playgroud)
我想为所有公司构建0到40经验水平的工资函数,a:
> salary_scales
firm year position exp …Run Code Online (Sandbox Code Playgroud) interpolation r linear-interpolation extrapolation data.table
我的数据点非常少,我想在半月表中绘制时创建一条最适合数据点的线.我已经尝试过scipy的曲线拟合和三次插值,但与数据趋势相比,它们似乎都不合理.
我请您检查是否有更有效的方法来创建适合数据的直线.可能外推可以做,但我没有找到关于python外推的好文档.
非常感谢你的帮助
import sys
import os
import numpy
import matplotlib.pyplot as plt
from pylab import *
from scipy.optimize import curve_fit
import scipy.optimize as optimization
from scipy.interpolate import interp1d
from scipy import interpolate
Run Code Online (Sandbox Code Playgroud)
Mass500 = numpy.array([ 13.938 , 13.816, 13.661, 13.683, 13.621, 13.547, 13.477, 13.492, 13.237,
13.232, 13.07, 13.048, 12.945, 12.861, 12.827, 12.577, 12.518])
y500 = numpy.array([ 7.65103978e-06, 4.79865790e-06, 2.08218909e-05, 4.98385924e-06,
5.63462673e-06, 2.90785458e-06, 2.21166794e-05, 1.34501705e-06,
6.26021870e-07, 6.62368879e-07, 6.46735547e-07, 3.68589447e-07,
3.86209019e-07, 5.61293275e-07, 2.41428755e-07, 9.62491134e-08,
2.36892162e-07])
plt.semilogy(Mass500, y500, 'o')
# interpolation
f2 …Run Code Online (Sandbox Code Playgroud) 是否有一种简单的方法可以线性外推R数据帧中的缺失值?
也许这是数据预处理中的一个琐碎且经常遇到的问题,但是,经过一段时间的搜索,我找不到任何简单的解决方案。
这个问题不是关于插值,而是关于在出现之前和之后推断丢失的数据。
我知道,使用用户定义的函数可以解决此问题,但是在这种情况下,恐怕是不必要的。
以下是起始输入数据帧,包括所需的输出格式。
任何帮助/提示都受到高度赞赏。提前非常感谢您。
输入数据帧:
input <- read.table(header=TRUE, text="
ID1 ID2 ID3 ID4 ID5 ID6
NA 20 NA NA NA NA
21 21 NA NA 22 NA
22 22 23 24 23 22
NA 23 24 25 NA 23
NA 24 25 26 NA 24
NA 25 26 27 NA 25
NA 26 27 28 NA 26
NA NA 28 NA NA 27
NA NA NA NA NA NA
NA NA NA NA NA NA
")
Run Code Online (Sandbox Code Playgroud)
输出数据帧:
output …Run Code Online (Sandbox Code Playgroud) extrapolation ×10
python ×5
r ×3
plot ×2
c++ ×1
contour ×1
data.table ×1
graphing ×1
matlab ×1
missing-data ×1
numpy ×1
pandas ×1
plotly ×1
prediction ×1
r-plotly ×1
scipy ×1
spline ×1