[PYTHON] Feature Quantity Engineering auf Reisen mit Pokemon-Kategorie-Variablen-

Beim maschinellen Lernen können Zeichenkettendaten wie Kategoriedaten nur dann in das maschinelle Lernmodell aufgenommen werden, wenn sie in numerische Daten konvertiert werden. Auch numerische Daten, die keine Ordnungsskala sind, sollten als kategoriale Variable behandelt werden. In diesem Artikel werde ich Ihnen zeigen, wie Sie kategoriale Variablen in eine maschinenverständliche Form konvertieren.

Diesmal, wie im Fall von Characteristics Engineering Travelling with Pokemon-Numerical Edition-, [Pokemon Dataset](https: // www. benutze kaggle.com/abcsds/pokemon).

Bibliothek laden

import pandas as pd
from sklearn.feature_extraction import FeatureHasher

Daten gelesen

df = pd.read_csv('./data/121_280_bundle_archive.zip')
df.head()

Daten

# Name Type 1 Type 2 Total HP Attack Defense Sp. Atk Sp. Def Speed Generation Legendary
1 Bulbasaur Grass Poison 318 45 49 49 65 65 45 1 False
2 Ivysaur Grass Poison 405 60 62 63 80 80 60 1 False
3 Venusaur Grass Poison 525 80 82 83 100 100 80 1 False
3 VenusaurMega Venusaur Grass Poison 625 80 100 123 122 120 80 1 False
4 Charmander Fire NaN 309 39 52 43 60 50 65 1 False

Dummy-Codierung

Die Dummy-Codierung ist die beliebteste und am häufigsten auftretende Technik beim Umgang mit kategorialen Variablen im Feature-Quantity-Engineering. Jede Kategorievariable wird durch die Bits 0 und 1 dargestellt. Das Bit des Teils, das dem Kategoriewert entspricht, ist 1, und das Bit des Teils, das nicht entspricht, ist 0. IMG_8246.JPG

pandas hat eine einfache Funktion für die Dummy-Codierung. Schauen wir uns den Code an.

# One-hot Encoding
gdm = pd.get_dummies(df['Type 1'])
gdm = pd.concat([df['Name'], gdm], axis=1)

Sie können sehen, dass das Bit, das dem Gras-Typ des Bulbasaur entspricht, 1 ist.

Name Bug Dark Dragon Electric Fairy Fighting Fire Flying Ghost Grass Ground Ice Normal Poison Psychic Rock Steel Water
Bulbasaur 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
Ivysaur 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
Venusaur 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
VenusaurMega Venusaur 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
Charmander 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0

Etikettencodierung

Die Dummy-Codierung wird durch 0, 1 Bit dargestellt, die Label-Codierung wird jedoch durch eine Ganzzahl dargestellt. IMG_6885.JPG

Hashing der Funktionsmenge

Der Unterschied zwischen Feature-Mengen-Hashing und herkömmlicher Konvertierung besteht darin, dass Feature-Mengen-Hashing nach der Konvertierung eine geringere Anzahl von Kategorien aufweist. Es ist kein Problem, wenn Sie sich vorstellen können, die Anzahl der Eingabefunktionen mithilfe einer magischen Funktion zu reduzieren, die als Hash-Funktion bezeichnet wird. ~~ Es ist einfacher, sich an eine Studie mit einem Bild zu erinnern. ~~

IMG_8811.JPG

Schauen wir uns den Code an. sklearn verfügt über ein FeatureHasher-Modul. Verwenden wir es also. Wir werden die Pokemon-Typen durch Feature-Hashing auf 5 eingrenzen.

Sie könnten denken: "Wann verwenden Sie es?" Denken Sie daran, es normalerweise zu verwenden, wenn zu viele kategoriale Variablen vorhanden sind.

fh = FeatureHasher(n_features=5, input_type='string')
hash_table = pd.DataFrame(fh.transform(df['Type 1']).todense())

Funktionen nach der Konvertierung

0 1 2 3 4
2 0 0 0 -1
2 0 0 0 -1
2 0 0 0 -1
2 0 0 0 -1
1 -1 0 -1 1

schließlich

Wann sollte ich eine dieser Methoden wählen? Eine Antwort besteht darin, je nach den Spezifikationen des Computers für die Analyse unterschiedliche Methoden zu verwenden. Während Dummy-Codierung und Label-Codierung einfach sind, können zu viele kategoriale Variablen Speicherfehler verursachen. Zu diesem Zeitpunkt können Sie ein Feature-Mengen-Hashing in Betracht ziehen, das die Feature-Menge komprimiert.

In letzter Zeit ist es jedoch in High-Spec-Rechner ist kostenlos verfügbar und wird häufig in Kaggle verwendet. GBDT, das verwendete Entscheidungsbaummodell, kann die Etikettencodierung verarbeiten. Es wird angenommen, dass das Hashing der Feature-Menge nicht so groß ist. IMG_5875.JPG

Recommended Posts

Feature Quantity Engineering auf Reisen mit Pokemon-Kategorie-Variablen-
Feature Quantity Engineering auf Reisen mit Pokemon-Numerical Version-
Hinweis "Features Engineering" von HJvanVeen
Feature Engineering für maschinelles Lernen ab Teil 3 Google Colaboratory-Scale
Kaggle House Preise ~ ~ Feature Engineering ~
Umgebungsvariablen mit Lambda-Uploader einstellen