使用递归曲线拟合和误差消除进行异常值检测

时间:2015-05-18 12:06:50

标签: python-2.7 scipy curve-fitting outliers best-fit-curve

有没有办法在数据集中使用递归曲线拟合进行异常检测,并删除相对于曲线具有最大均方误差的点,达到可接受的阈值?

我正在使用python 2.7的scipy.optimize.curve_fit函数,我需要优先使用python。

1 个答案:

答案 0 :(得分:1)

你最有可能在谈论递归回归(在Matlab中很容易)。对于python,请尝试使用scipy.optimize.curve_fit

对于简单的3次多项式拟合,这将基于numpy.polyfitpoly1d

import numpy as np
import matplotlib.pyplot as plt

points = np.array([(1, 1), (2, 4), (3, 1), (9, 3)])
# get x and y vectors
x = points[:,0]
y = points[:,1]

# calculate polynomial
z = np.polyfit(x, y, 3)
f = np.poly1d(z)

# calculate new x's and y's
x_new = np.linspace(x[0], x[-1], 50)
y_new = f(x_new)

plt.plot(x,y,'o', x_new, y_new)
plt.xlim([x[0]-1, x[-1] + 1 ])
plt.show()