[PYTHON] Formatez les données DataFrame avec Pytorch sous une forme pouvant être entraînée avec NN

Aperçu

Lors de la formation et de la vérification des données avec un réseau neuronal, il est nécessaire de mettre en forme les données dans le formulaire (groupe de données, étiquette). MNIST et CIFAR10 ont cette forme à l'avance, mais lorsque vous utilisez les données dont vous disposez, vous devez créer cette forme vous-même. Cependant, il a fallu un certain temps pour comprendre, donc je vais l'enregistrer ici.

De plus, il y avait des gens qui ont répondu en anglais sur la méthode de base, donc si vous parlez anglais, veuillez consulter la série d'échanges suivante. Convert Pandas dataframe to PyTorch tensor?

Cette Qiita complète le contexte et explique un peu plus en détail, veuillez donc ne lire que si nécessaire.

Séparez vos données en données et en étiquettes

Tirez l'étiquette du DataFrame (nom de la colonne d'étiquette: cible)

train_label = torch.tensor(train['target'].values)

Citation: Convertir la trame de données Pandas en tenseur PyTorch?

Extraire des groupes de données du DataFrame étiqueté

train_data = torch.tensor(X.drop('target', axis = 1).values)

Citation: Convertir la trame de données Pandas en tenseur PyTorch?

Cependant, cela peut entraîner l'erreur suivante:

Error


TypeError: can't convert np.ndarray of type numpy.object_. The only supported types are: float64, float32, float16, int64, int32, int16, int8, uint8, and bool.

Comme mentionné ci-dessus, si le type de np.ndarray est object, il ne peut pas être converti en torch.tensor. Un objet est un type de données qui est un mélange de plusieurs types de données. Par conséquent, les données doivent être converties en l'un des types de données correspondants du tenseur ci-dessus. Par exemple, unissons-le au type float32. Cela fonctionne bien si vous le réécrivez comme suit.

train_data = torch.tensor(X.drop('target', axis = 1).values.astype(np.float32)) 

Citation: Convertir la trame de données Pandas en tenseur PyTorch?

Utilisez ce type de données adapté à vos données. Pour plus de détails sur les types de données, voir Liste des types de données NumPy et conversion par type de données (cast).

Convertir la trame de données du groupe de données uniquement en tenseur

Ou s'il existe un DataFrame (X_train) non étiqueté depuis le début, convertissez-le en np.array puis en tenseur.

train_data = torch.tensor(np.array(X_train.astype('f')))

Formater les données en (groupe de données, étiquette)

from torch.utils import data
train_tensor = data.TensorDataset(train_data, train_label) 

La classe torch.utils.data.TensorDataset prend les tenseurs comme argument et rassemble les données en indexant les tenseurs selon la première dimension. Donc, bien sûr, vous obtiendrez une erreur si vous ne disposez pas de suffisamment de données et d'étiquettes pour vous entraîner. Référence: tutoriel officiel pytorch

c'est tout.

Recommended Posts

Formatez les données DataFrame avec Pytorch sous une forme pouvant être entraînée avec NN
Convertir des images du SDK FlyCapture en un formulaire pouvant être utilisé avec openCV
Récapitulatif du format des formats qui peuvent être sérialisés avec gensim
Faisons un diagramme sur lequel on peut cliquer avec IPython
Convertir les données de maillage exportées de SpriteUV2 dans un format pouvant être importé par Spine
Puis-je être un data scientist?
[Python] Créez un graphique qui peut être déplacé avec Plotly
Créez une Spinbox qui peut être affichée en binaire avec Tkinter
J'ai fait un shuffle qui peut être réinitialisé (inversé) avec Python
Créez un graphique des devises qui peut être déplacé avec Plotly (2)
Créez une Spinbox pouvant être affichée dans HEX avec Tkinter
Créez un graphique des devises qui peut être déplacé avec Plotly (1)
[Python] Dessinez des données d'altitude sur une surface sphérique avec Plotly et dessinez un globe qui peut être tourné en rond et en rond
À propos du fait que le résumé de la torche peut être vraiment utilisé lors de la construction d'un modèle avec Pytorch
Créez une application Web qui peut être facilement visualisée avec Plotly Dash
Notes pour créer des figures pouvant être publiées dans des revues avec matplotlib
Types de fichiers pouvant être utilisés avec Go
Répertorier les packages pouvant être mis à jour avec pip
Transformez les données de vacances en une trame de données avec les pandas
Entraînez les données MNIST avec PyTorch en utilisant un réseau neuronal
Quantité d'entités pouvant être extraite des données de séries chronologiques
Liste des couleurs pouvant être définies avec tkinter (mémorial)
Un serveur qui fait écho aux données POSTées avec flask / python
Limites qui peuvent être analysées à la fois avec MeCab
Programme Python qui convertit les données ical en texte
Un mémo qui lit les données de dashDB avec Python et Spark
Il semble que le suivi des squelettes puisse être effectué avec RealSense
Convertissez RVB et HSV sous une forme divisible avec PyTorch
Créer un environnement Docker qui peut utiliser PyTorch et JupyterLab
Créez une API Web capable de fournir des images avec Django
Implémentez un thread qui peut être suspendu en exploitant le rendement
J'ai étudié le prétraitement qui peut être fait avec PyCaret
J'ai créé un plug-in qui peut faire "Daruma-san tombé" avec Minecraft
Convertissez les données météorologiques au format GRIB2 qui ne peuvent pas être ouvertes avec pygrib en netCDF et visualisez-les
Comprendre les probabilités et les statistiques qui peuvent être utilisées pour la gestion des progrès avec un programme python
[Python] Un programme qui trouve le nombre maximum de jouets pouvant être achetés avec votre argent
Une histoire et sa mise en œuvre selon laquelle des données arbitraires a1 * a2 peuvent être représentées par un réseau de neurones ReLU à 3 couches avec des neurones intermédiaires a1 et a2 sans erreur.