我正在研究两个功能。我有两个数据集,例如[[x(1), y(1)], ..., [x(n), y(n)]]
,dataSet
和testData
。
createMatrix(D, S)
返回数据矩阵,其中D
是度,S
是实数[s(1), s(2), ..., s(n)]
的向量。
我知道numpy
有一个名为polyfit
的函数。但是polyfit
接受了三个变量,关于我如何创建矩阵的任何建议?
polyFit(D)
,它接受度D
的多项式,并使用线性最小二乘法将其拟合到数据集。我正在尝试返回权重向量和错误。我也知道我在lstsq
中找到numpy.linag
def createMatrix(D, S):
x = []
y = []
for i in dataSet:
x.append(i[0])
y.append(i[1])
polyfit(x, y, D)
:Fitting polynomials to data
是否可以使用该问题重新创建我正在尝试的内容?
这是我到目前为止所做的,但它无效。
def polyFit(D)
我不知道的是,实数的向量S与此有什么关系?
w
我在上面提到的问题上基于这个问题。我不确定如何获得Code jsfiddle :)
,即权重向量。我将编码errors,所以这很好,我只是想知道你是否对自己获得权重向量有任何建议。
答案 0 :(得分:1)
看起来所有createMatrix
正在创建polyfit
所需的两个向量。你所拥有的将会起作用,但 pythonic 的方法就越多
def createMatrix(dataSet, D):
D = 3 # set this to whatever degree you're trying
x, y = zip(*dataSet)
return polyfit(x, y, D)
(This S/O link提供zip(*dataSet)
成语的详细说明。)
这将返回一个系数向量,然后您可以将其传递给poly1d
以生成结果。 (可以找到polyfit
和poly1d
的进一步说明here。)
显然,您需要确定D
的所需值。对此的简单回答是1,2或3.高阶立方数的多项式往往相当不稳定,内在误差使得它们的输出相当无意义。
听起来你可能正在尝试进行某种相关性分析(即y是否随x变化,如果是这样,在多大程度上变化?)你几乎肯定会想要使用线性(D = 1)这种分析的回归。您可以尝试进行最小二乘拟合(D = 2),但同样,误差范围可能比您的假设(例如分布的正态性)更宽。