Ich habe eine Python-Bibliothek erstellt, die einen rollierenden Rang hat

rollingrank

Ich habe eine Python-Bibliothek namens RollingRank erstellt, die das Ranking im Rolling-Fenster berechnet, daher werde ich es vorstellen. Bitte mit kaggle verwenden. Bitte melden Sie einen Fehler in der Ausgabe auf Github.

Repository https://github.com/contribu/rollingrank

Hintergrund

  1. Ich möchte das Problem der Zeitreihenvorhersage mit kaggle usw. lösen.
  2. Ich möchte das Ranking im rollierenden Fenster als Feature-Menge verwenden.
  3. Ich konnte keine Python-Bibliothek dafür finden.
  4. Eine Implementierung in Pandas wurde gefunden, aber langsam (https://github.com/pandas-dev/pandas/issues/9481).

In dem Problem habe ich gelöst Das Ranking im rollierenden Fenster zu einer Feature-Menge zu machen, war der Schlüssel zum Erreichen der Generalisierungsleistung. Ich denke, der Punkt ist, dass die Verteilung nicht abhängig von der Zeit voreingenommen ist.

Es scheint zwar nützlich zu sein (ich kenne nur meinen Fall, daher weiß ich nicht, ob es im Allgemeinen nützlich ist). Ich sehe nicht viel im Kaggle-Bereich.

Der Grund kann sein, dass es nicht einfach zu bedienen ist. Sie können den rollierenden Rang mit dieser Bibliothek problemlos verwenden. Warum also nicht versuchen, ihn für das Problem zu verwenden, das Sie gerade lösen?

Installation

pip install rollingrank

Wie benutzt man

import numpy as np
import rollingrank

#Wenn Sie ein Numpy-Array eingeben, wird ein Numpy-Array mit derselben Länge zurückgegeben.
x = np.array([0.1, 0.2, 0.3, 0.25, 0.1, 0.2, 0.3])
y = rollingrank.rollingrank(x, window=3)
print(y)
# [nan nan  2.  1.  0.  1.  2.]

#Mit pct,[0, 1]Ich werde mit zurückkehren
y = rollingrank.rollingrank(x, window=3, pct=True)
print(y)
# [nan nan 1.  0.5 0.  0.5 1. ]

Ranking anpassen

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.rank.html

Von den in definierten Methoden können Sie zuerst durchschnittlich, min, max verwenden, indem Sie sie mit der Methodenoption übergeben.

Hinweis

Ich wollte etwas mit einem O (n * log (w)) Berechnungsbetrag machen. Als ich nach der Implementierung genau hinschaute, war es O (n * w). Wenn Sie einen Bilanzbaum erstellen, sollten Sie ihn auf O (n * log (w)) setzen können. Jemand bitte.

Es scheint gut zu sein, etwas wie das Folgende zu ändern. https://github.com/mpaland/avl_array

Persönliches Memo

So erstellen Sie eine Pip-Bibliothek: https://blog.amedama.jp/entry/packaging-python

rolling rank: https://github.com/pandas-dev/pandas/issues/9481

Pybind11 war praktisch für die Verknüpfung mit C ++.

Recommended Posts

Ich habe eine Python-Bibliothek erstellt, die einen rollierenden Rang hat
Ich habe eine Bibliothek erstellt, die Konfigurationsdateien mit Python einfach lesen kann
Ich habe einen Python-Text gemacht
Ich habe ein Python-Modul erstellt, um Kommentare zu übersetzen
Ich habe eine Bibliothek zum Betreiben des AWS CloudFormation-Stacks über CUI (Python Fabric) erstellt.
Ich habe einen Line-Bot mit Python gemacht!
Ich habe meine eigene Python-Bibliothek erstellt
Ich habe mit Python eine Lotterie gemacht.
Ich habe mit Python einen Daemon erstellt
Ich habe ein Paket erstellt, um Zeitreihen mit Python zu filtern
Ich habe Othello dazu gebracht, Kindern Python3 beizubringen (4)
Ich habe ein Pay-Management-Programm in Python erstellt!
Ich habe mit Python einen Zeichenzähler erstellt
Ich habe eine Python-Bibliothek erstellt, um die API von LINE WORKS aufzurufen
Ich habe Othello dazu gebracht, Kindern Python3 beizubringen (2)
Ich möchte eine Python-Umgebung erstellen
Ich möchte den vollständigen Text mit elasticsearch + python durchsuchen
Ich habe Othello dazu gebracht, Kindern Python3 beizubringen (5)
Ich habe ein Skript erstellt, um Piktogramme anzuzeigen
Ich habe mit Python eine Hex-Map erstellt
Nachdem ich Python3 studiert hatte, machte ich einen Slackbot
Ich habe mit Python ein schurkenhaftes Spiel gemacht
Ich habe Othello dazu gebracht, Kindern Python3 beizubringen (3)
Ich habe Othello dazu gebracht, Kindern Python3 beizubringen (1)
Ich habe mit Python einen einfachen Blackjack gemacht
Ich habe eine Python-Wrapper-Bibliothek für die Docomo-Bilderkennungs-API erstellt.
Ich habe mit Python eine Einstellungsdatei erstellt
Ich habe eine Bibliothek für versicherungsmathematische Versicherungen erstellt
Ich habe mit Python einen Neuronensimulator erstellt
Ich habe einen Docker-Container erstellt, um JUMAN ++, KNP, Python (für pyKNP) zu verwenden.
[Python] Ich habe einen Dekorateur gemacht, der keinen Nutzen zu haben scheint.
Ich habe einen Passwortgenerator erstellt, um Kindern Python3 beizubringen (Bonus) * Vollständig neu erstellt
Ich habe ein Tool zum automatischen Durchsuchen mehrerer Websites mit Selenium (Python) erstellt.
Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert
Ich habe ein Skript in Python erstellt, um MDD-Dateien in das Scrapbox-Format zu konvertieren
Ich habe eine Bibliothek konoha gemacht, die den Tokenizer auf ein schönes Gefühl umstellt
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Ich habe eine Funktion erstellt, um die Bewegung eines zweidimensionalen Arrays (Python) zu sehen.
Ich möchte Affenpatches nur teilweise sicher mit Python machen
Ich habe eine Python-Wörterbuchdatei für Neocomplete erstellt
Ich möchte Dunnetts Test in Python machen
Ich habe mit Python eine Bot-Wettervorhersage gemacht.
Ich habe eine GUI-App mit Python + PyQt5 erstellt
[Python] Was ich getan habe, um Unit Test zu machen
Ich möchte mit Python ein Fenster erstellen
Ich habe versucht, mit Python einen Twitter-Blocker für faule Mädchen zu machen
Ich möchte ein Spiel mit Python machen
[Python] Ich habe mit Tkinter einen Youtube Downloader erstellt.
Ich habe ein Tool erstellt, um Hy nativ zu kompilieren
Ich habe ein Tool erstellt, um neue Artikel zu erhalten
Ich möchte mit Python in eine Datei schreiben
Ich habe ein Caesar-Kryptografieprogramm in Python erstellt.
Ich habe mit Python ein Bin-Picking-Spiel gemacht
Mattermost Bot mit Python gemacht (+ Flask)
Python Qiita API Wrapper "qiipy" gemacht
Ich habe einen Zeilenbot erstellt, der Python verwendet, um ungelesene E-Mails aus Google Mail abzurufen!
[Python] Deep Learning: Ich habe versucht, Deep Learning (DBN, SDA) ohne Verwendung einer Bibliothek zu implementieren.
Ich habe ein Modul in C-Sprache erstellt, das von Python geladene Bilder filtert