J'ai créé une bibliothèque python qui fait rouler le rang

rollingrank

J'ai créé une bibliothèque python appelée rollingrank qui calcule le rang dans la fenêtre déroulante, je vais donc la présenter. Veuillez utiliser avec kaggle. Veuillez signaler un bogue dans le problème sur github.

Dépôt https://github.com/contribu/rollingrank

Contexte

  1. Je veux résoudre le problème de la prédiction des séries temporelles avec kaggle etc.
  2. Je souhaite utiliser le classement dans la fenêtre déroulante comme quantité d'entités.
  3. Je n'ai pas trouvé de bibliothèque Python pour faire cela.
  4. Une implémentation dans pandas a été trouvée mais lente (https://github.com/pandas-dev/pandas/issues/9481)

Dans le problème que je résolvais Faire du classement dans la fenêtre déroulante une quantité de caractéristiques était la clé pour obtenir des performances de généralisation. Je pense que le fait est que la distribution n'est pas biaisée en fonction du temps.

Bien que cela semble utile (je ne sais pas si c'est utile en général car je ne connais que mon cas) Je ne vois pas grand-chose dans la région de Kaggle.

La raison peut être qu'il n'est pas facile à utiliser. Avec cette bibliothèque, vous pouvez facilement utiliser le classement glissant, alors pourquoi ne pas essayer de l'utiliser pour le problème que vous résolvez maintenant?

Installation

pip install rollingrank

Comment utiliser

import numpy as np
import rollingrank

#La saisie d'un tableau numpy renverra un tableau numpy de la même longueur.
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.]

#Avec PCT,[0, 1]Reviendra avec
y = rollingrank.rollingrank(x, window=3, pct=True)
print(y)
# [nan nan 1.  0.5 0.  0.5 1. ]

Personnalisez le classement

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

Parmi les méthodes définies dans, vous pouvez utiliser average, min, max, d'abord en les passant avec l'option method.

Mise en garde

Je voulais faire quelque chose avec une quantité de calcul O (n * log (w)). Quand j'ai regardé attentivement après sa mise en œuvre, c'était O (n * w). Si vous concevez un arbre d'équilibrage, vous devriez pouvoir le rendre O (n * log (w)). Quelqu'un s'il vous plaît.

Il semble bon de modifier quelque chose comme ce qui suit. https://github.com/mpaland/avl_array

Mémo personnel

Comment créer une bibliothèque pip: https://blog.amedama.jp/entry/packaging-python

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

Pybind11 était pratique pour la liaison avec C ++.

Recommended Posts

J'ai créé une bibliothèque python qui fait rouler le rang
J'ai créé une bibliothèque qui lit facilement les fichiers de configuration avec Python
J'ai fait un texte Python
J'ai créé un module Python pour traduire les commentaires
J'ai créé une bibliothèque pour faire fonctionner la pile AWS CloudFormation à partir de CUI (Python Fabric)
J'ai fait un Line-bot avec Python!
J'ai créé ma propre bibliothèque Python
J'ai fait une loterie avec Python.
J'ai créé un démon avec Python
J'ai créé un package pour filtrer les séries chronologiques avec python
J'ai fait Othello pour enseigner Python3 aux enfants (4)
J'ai fait un programme de gestion de la paie en Python!
J'ai fait un compteur de caractères avec Python
J'ai créé une bibliothèque Python pour appeler l'API de LINE WORKS
J'ai fait Othello pour enseigner Python3 aux enfants (2)
Je veux créer un environnement Python
Je souhaite rechercher le texte intégral avec elasticsearch + python
J'ai fait Othello pour enseigner Python3 aux enfants (5)
J'ai fait un script pour afficher des pictogrammes
J'ai fait une carte hexadécimale avec Python
Après avoir étudié Python3, j'ai créé un Slackbot
J'ai fait un jeu rogue-like avec Python
J'ai fait Othello pour enseigner Python3 aux enfants (3)
J'ai fait Othello pour enseigner Python3 aux enfants (1)
J'ai fait un simple blackjack avec Python
J'ai créé une bibliothèque de wrapper Python pour l'API de reconnaissance d'images docomo.
J'ai créé un fichier de configuration avec Python
J'ai fait une bibliothèque pour l'assurance actuarielle
J'ai fait un simulateur de neurones avec Python
J'ai créé un conteneur Docker pour utiliser JUMAN ++, KNP, python (pour pyKNP).
[Python] J'ai fait un décorateur qui ne semble pas avoir d'utilité.
J'ai fait un générateur de mot de passe pour enseigner Python3 aux enfants (bonus) * Complètement refait
J'ai créé un outil pour parcourir automatiquement plusieurs sites avec Selenium (Python)
J'ai créé une application Web en Python qui convertit Markdown en HTML
J'ai créé un script en python pour convertir des fichiers .md au format Scrapbox
J'ai créé un konoha de bibliothèque qui fait passer le tokenizer à une belle sensation
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
J'ai créé une fonction pour voir le mouvement d'un tableau à deux dimensions (Python)
Je veux faire un patch monkey seulement en partie en toute sécurité avec Python
J'ai créé un fichier de dictionnaire python pour Neocomplete
Je veux faire le test de Dunnett en Python
J'ai fait une prévision météo de type bot avec Python.
J'ai créé une application graphique avec Python + PyQt5
[Python] Ce que j'ai fait pour faire un test unitaire
Je veux créer une fenêtre avec Python
J'ai essayé de créer un bloqueur de filles pourries sur Twitter avec Python ①
Je veux faire un jeu avec Python
[Python] J'ai créé un téléchargeur Youtube avec Tkinter.
J'ai créé un outil pour compiler nativement Hy
J'ai créé un outil pour obtenir de nouveaux articles
Je veux écrire dans un fichier avec Python
J'ai créé un programme cryptographique César en Python.
J'ai fait un jeu de cueillette avec Python
Made Mattermost Bot avec Python (+ Flask)
Création du wrapper d'API Qiita Python "qiipy"
J'ai créé un Line Bot qui utilise Python pour récupérer les e-mails non lus de Gmail!
[Python] Deep Learning: J'ai essayé d'implémenter Deep Learning (DBN, SDA) sans utiliser de bibliothèque.
J'ai fait un module en langage C qui filtre les images chargées par Python