Monday 10 July 2017

Numpy Convolve Exponentiell Gleitender Durchschnitt


Ich schreibe eine gleitende durchschnittliche Funktion, die die Convolve-Funktion in numpy verwendet, die einem (gewichteten gleitenden Durchschnitt) entsprechen sollte. Wenn meine Gewichte alle gleich sind (wie in einem einfachen arithmatischen Durchschnitt), funktioniert es adaequat: Wenn ich versuche, einen gewichteten Durchschnitt anstelle der (für die gleichen Daten) zu verwenden, 3.667.4.667,5.667,6.667. Ich erwarte, ich bekomme Wenn ich die gültige Flagge zu entfernen, Ich sehe nicht einmal die richtigen Werte. Ich möchte wirklich Convolve für die WMA sowie MA verwenden, da es die Code-Reiniger (gleichen Code, verschiedene Gewichte) macht und sonst denke ich Ill müssen durchlaufen alle Daten und nehmen Scheiben. Irgendwelche Ideen über dieses VerhaltenHmmm, scheint es diese quoteasy zu implementquot Funktion ist eigentlich ziemlich einfach, falsch zu erhalten und hat eine gute Diskussion über Speicher-Effizienz gefördert. I39m glücklich, aufblasen zu haben, wenn es bedeutet, dass etwas nach rechts gemacht worden ist. Ndash Richard NumPys Mangel an einer bestimmten Domain-spezifische Funktion ist vielleicht aufgrund der Core Teams Disziplin und Treue zu NumPys Prime-Direktive: bieten einen N-dimensionalen Array-Typ. Sowie Funktionen zum Erstellen und Indizieren dieser Arrays. Wie viele grundlegende Ziele, diese ist nicht klein, und NumPy macht es brillant. Das (viel) grßere SciPy enthält eine viel grßere Sammlung von domänenspezifischen Bibliotheken (sogenannte Unterpakete von SciPy-Devs), beispielsweise numerische Optimierung (Optimierung), Signalverarbeitung (Signal) und Integralrechnung (integrieren). Meine Vermutung ist, dass die Funktion, die Sie nach ist in mindestens einem der SciPy-Unterpakete (scipy. signal vielleicht) aber ich würde zuerst in der Sammlung von SciPy Scikits suchen. Identifizieren die relevanten Scikit (s) und suchen die Funktion von Interesse dort. Scikits sind unabhängig voneinander entwickelte Pakete, die auf NumPySciPy basieren und auf eine spezielle technische Disziplin gerichtet sind (z. B. scikits-image, scikits-learn etc.) Einige davon waren (vor allem das geniale OpenOpt für numerische Optimierung) hoch angesehene, ausgereifte Projekte Bevor er sich unter der relativ neuen Scikits-Rubrik befindet. Auf der Homepage der Scikits sind über 30 solcher Scikits aufgelistet. Obwohl mindestens einige von ihnen nicht mehr unter aktiver Entwicklung sind. Nach diesem Rat würden Sie zu scikits-timeseries führen, aber das Paket ist nicht mehr unter aktiver Entwicklung In Wirklichkeit ist Pandas geworden, AFAIK, die de facto NumPy-basierte Zeitreihen-Bibliothek. Pandas hat mehrere Funktionen, die verwendet werden können, um einen gleitenden Durchschnitt zu berechnen, der einfachste ist wahrscheinlich rollingmean. Die Sie so verwenden: Nun, rufen Sie einfach die Funktion Rolling Mean Passing in der Serie Objekt und eine Fenstergröße. Die in meinem Beispiel unten ist 10 Tage. Ob es funktioniert hat - z. Verglichen Werte 10-15 in der ursprünglichen Serie gegenüber der neuen Serie geglättet mit rollenden Mittel Die Funktion Rolling Mean, zusammen mit etwa ein Dutzend oder so andere Funktion sind informell gruppiert in der Pandas-Dokumentation unter der Rubrik Moving-Fenster-Funktionen eine zweite, verwandte Gruppe von Funktionen In Pandas wird als exponentiell gewichtete Funktionen bezeichnet (zB ewma, die einen exponentiell verschobenen gewichteten Durchschnitt berechnet). Die Tatsache, dass diese zweite Gruppe nicht in den ersten (bewegten Fensterfunktionen) enthalten ist, liegt vielleicht daran, dass die exponentiell gewichteten Transformationen sich nicht auf ein Fenster mit fester Länge verlassen. Die folgenden Beispiele erzeugen einen gleitenden Durchschnitt der vorhergehenden WINDOW-Werte. Wir schneiden die ersten (WINDOW -1) Werte ab, da wir den Durchschnitt vor ihnen finden können. (Das Standardverhalten für die Konvolution besteht darin, dass Werte vor dem Beginn unserer Sequenz 0 sind). (Formalerweise konstruieren wir die Folge y für die Folge x mit yi (xi x (i1) 8230. x (in)) n) Dies nutzt die numpy8217s-Faltungsfunktion. Dies ist ein gleitender Durchschnittsbetrieb. Ändern Sie Gewichtungen macht einige Werte wichtiger Offsetting entsprechend können Sie die durchschnittliche als um Punkt zu sehen, anstatt vor Punkt. Anstatt die Werte zu verkürzen, können wir die Anfangswerte festlegen, wie in diesem Beispiel dargestellt:

No comments:

Post a Comment