2016-10-26 4 views
1

Ich benutze die Funktion Multipolyfit, um eine Funktion zweiten Grades mit 3 unabhängigen Variablen (trivariate quadratic) zu erstellen. Der Code lautetMultipolyfit (Python): In welcher Reihenfolge sind die Koeffizienten?

data=numpy.loadtxt("file.txt") 
hour=data[:,3] 
day=data[:,4] 
temp=data[:,5] 
load=data[:,6] 
a=multipolyfit.multipolyfit(numpy.vstack((hour,day,temp)).T, load, 2) 
print a 

Tag, Temp und Last sind die unabhängigen Variablen. Last ist die Variable, die ich vorhersagen möchte. Die Ausgabe scheint die Liste der 8 Koeffizienten für meine trivariate quadratische zu sein.

[ 27011. 771. 5462. -394. -29. -83.  10. -804.  9.  1] 

In welcher Reihenfolge liegen die obigen Koeffizienten?

+0

Verwandte: http://stackoverflow.com/questions/18767523/fitting-data-with-numpy – RegularlyScheduledProgramming

+0

Das ist für eine abhängige Variable. Ich suche nach Multi-Variable nicht-lineare Regression. – user3503704

Antwort

0

Multipolyfit ist schlecht dokumentiert. Der Autor erwähnt in ihrer Github-Readme-Datei sogar Folgendes:

Ich beantworte selten Fragen zu diesem Repository. Es ist seltsam beliebt, aber die Implementierung ist ziemlich dicht und so generiert dieses Projekt eine große Anzahl von vernünftigen Fragen. Leider habe ich keine Zeit, auf all diese Fragen zu antworten.

Ich würde mehr über dieses Projekt interessieren, wenn es einen nützlichen Algorithmus enthielt. Es tut es nicht.

Glücklicherweise ist der Code in seiner Gesamtheit weniger als hundert Zeilen und ziemlich einfach zu navigieren. Es schafft Permutationen der Koeffizient Befugnisse wie:

[[2 0 0 0] 
[1 1 0 0] 
[1 0 1 0] 
[1 0 0 1] 
[0 2 0 0] 
[0 1 1 0] 
[0 1 0 1] 
[0 0 2 0] 
[0 0 1 1] 
[0 0 0 2]] 

wo die Säulen der Macht entsprechen [1, Stunde, Tag, temp], respectively. Für Ihre Koeffizienten erhalten Sie 27011*(1**2) + 771*(1**1 * hour**1) + .... Sie dies selbst ohne zu Graben durch den Code bekommen powers_out=True das Stichwort Argument, indem:

>>> a,powers=multipolyfit.multipolyfit(numpy.vstack((hour,day,temp)).T, 
             load, 2, powers_out=True) 
[array([2, 0, 0, 0]), array([1, 1, 0, 0]), array([1, 0, 1, 0]), array([1, 0, 0, 1]), array([0, 2, 0, 0]), array([0, 1, 1, 0]), array([0, 1, 0, 1]), array([0, 0, 2, 0]), array([0, 0, 1, 1]), array([0, 0, 0, 2])] 
+0

Vielen Dank. – user3503704

Verwandte Themen