[PYTHON] Quantité d'entités pouvant être extraite des données de séries chronologiques

Lors de l'analyse de données de séries chronologiques, il est parfois nécessaire d'extraire une série chronologique partielle et d'extraire des caractéristiques. Les caractéristiques suivantes peuvent être extraites.

from scipy import fftpack, signal
import scipy
import numpy as np
import matplotlib.pyplot as plt


def pentropy(y, fs):
    f, Pxx = signal.periodogram(y, fs)
    pk = Pxx / np.mean(Pxx)
    S = scipy.stats.entropy(pk)
    return S


def generate_features(y, x, fs=1, order=5):
    """
    Parameters
    ----------
    y : np.ndarray
Données de vague
        
    x : np.ndarray
Heure etc.
    
    fs : int
Fréquence d'échantillonnage
    
    order : int
Intervalle de détection de pic

    Returns
    ----------
    np.ndarray
Vecteur caractéristique
    """
        
    # norm
    L1 = np.linalg.norm(y, ord=1)
    L2 = np.linalg.norm(y, ord=2)
    
    # mean
    mean = np.mean(y)
    
    # Standard deviation
    std = np.std(y)
    
    # skewness
    skew = scipy.stats.skew(y)
    
    # kurtosis
    kurtosis = scipy.stats.kurtosis(y)
    
    # mad
    mad = np.linalg.norm(y - mean, ord=1)
    
    # percentile
    percentil_calc = np.percentile(y, [0, 1, 25, 50, 75, 99, 100])
    
    # relative_percentile
    relative_percentile = percentil_calc - mean
    
    # value range
    max_range = percentil_calc[-1] - percentil_calc[0]
    
    # asymmetry
    v_max = relative_percentile[-1]
    v_min = relative_percentile[0]
    asymmetry = v_max + v_min

    #Obtenir l'indice de la valeur de pointe
    maxid = signal.argrelmax(y, order=order)  #Valeur maximum
    minid = signal.argrelmin(y, order=order)  #valeur minimum
    
    # max height of peaks
    max_height = np.max(y[maxid])
    
    # min height of peaks
    min_height = np.min(y[minid])
    
    # peak height diff
    peak_width = max_height - min_height
    
    # mean value of peak's width
    x_p = np.append(x[maxid], x[minid])
    mean_width_all = np.mean(x_p)
    
    # number of peaks
    num_peak = len(x_p)
    
    # max, min and their diff, mean of peak's width
    diff1 = np.diff(x_p)
    width_max = np.max(diff1)
    width_min = np.min(diff1)
    width_diff = width_max - width_min
    width_mean = np.mean(diff1)
    width_median = np.median(diff1)
    
    # spectral entropy
    se = pentropy(y, fs)

    # merge to features (15features)
    features = np.concatenate([np.asarray(
        [L1, L2, mean, std, skew, kurtosis, mad, max_range,
         asymmetry, max_height, min_height, peak_width,
         mean_width_all, num_peak, width_max, width_min, width_diff,
         width_mean, width_median, se]
    ), relative_percentile])

    return features


x = np.linspace(0, 10, 100)
yorg = np.sin(x)
y = yorg + np.random.randn(100)*0.5

features = generate_features(y, x, order=5)

Recommended Posts

Quantité d'entités pouvant être extraite des données de séries chronologiques
Bibliothèque tsfresh qui extrait automatiquement les caractéristiques des données de séries chronologiques
Obtenez des données de séries chronologiques de k-db.com avec Python
Extraire les périodes qui correspondent à un modèle spécifique des données qualitatives de séries chronologiques de pandas
[Python] Tracer des données de séries chronologiques
Programme Python qui agrège l'utilisation du temps à partir des données icalendar
Installez Mecab et CaboCha sur ubuntu16.04LTS afin qu'il puisse être utilisé à partir de la série python3
Convertir les données de maillage exportées de SpriteUV2 dans un format pouvant être importé par Spine
Comment extraire des fonctionnalités de données de séries chronologiques avec les bases de PySpark
Puis-je être un data scientist?
Python: analyse des séries chronologiques: prétraitement des données des séries chronologiques
[numpy] Créer une matrice de fenêtre mobile à partir de données de séries chronologiques multidimensionnelles
À propos des données de séries chronologiques et du surentraînement
Confirmation que rkhunter peut être installé
Différenciation des données de séries chronologiques (discrètes)
Analyse des séries chronologiques 3 Prétraitement des données des séries chronologiques
Remplissage facile des données pouvant être utilisées dans le traitement du langage naturel
À propos de "spleeter" qui peut séparer les voix et les instruments de musique des données musicales
J'ai fait une simple minuterie qui peut être démarrée depuis le terminal
ConSinGAN: J'ai essayé d'utiliser le GAN qui peut être généré à partir d'une image
Prédiction des données de séries chronologiques par projection simplex
Prédire les données de séries chronologiques avec un réseau neuronal
Détection d'anomalies de données chronologiques pour les débutants
Comment gérer les données de séries chronologiques (mise en œuvre)
Lecture des données de séries chronologiques OpenFOAM et des ensembles de données
Résumé des sources de données scikit-learn pouvant être utilisées lors de la rédaction d'articles d'analyse
Formatez les données DataFrame avec Pytorch sous une forme pouvant être entraînée avec NN
Commande Linux (édition de base) utilisable à partir d'aujourd'hui si vous connaissez
Types de fichiers pouvant être utilisés avec Go
Fonctions pouvant être utilisées dans l'instruction for
Construire un Sphinx qui peut être écrit avec Markdown
Résumé de la méthode Kaggle's Kernel [Table time series data]
Acquisition de données chronologiques (quotidiennes) des cours des actions
Lissage des séries temporelles et des données de forme d'onde 3 méthodes (lissage)
Répertorier les packages pouvant être mis à jour avec pip
Voir les détails des données de séries chronologiques dans Remotte
Comment lire les données de séries chronologiques dans PyTorch
Présentation et fonctionnalités utiles de scikit-learn qui peuvent également être utilisées pour l'apprentissage en profondeur
Convertir des images du SDK FlyCapture en un formulaire pouvant être utilisé avec openCV
Résumé des méthodes d'analyse de données statistiques utilisant Python qui peuvent être utilisées en entreprise
"Obtenir des données de séries chronologiques de stock à partir de k-db.com avec Python" Mémo de création d'environnement de programme
Un mécanisme pour appeler des méthodes Ruby à partir de Python qui peut être fait en 200 lignes
Prédire à partir de diverses données en Python à l'aide de l'outil de prédiction de séries chronologiques Facebook Prophet