Organisieren Sie Python-Tools, um die anfängliche Bewegung von Datenanalyse-Wettbewerben zu beschleunigen

Zweck

Bei Analysewettbewerben wie Kaggle und Signate ist daher die Geschwindigkeit der ersten Aktion wichtig Organisieren Sie häufig verwendete Vorlagen vom Typ Jupyter Notebook, um die anfängliche Aktion zu beschleunigen. Von Zeit zu Zeit aktualisiert.

Veränderung

2020.5.25 Zufallszahleneinstellung ändern (Funktionalisierung)

Inhaltsverzeichnis

  1. Vorlage importieren
  2. Daten gelesen
  3. Automatisches Laden der Bibliothek
  4. Leistungsprofil (%% Zeit /% lprun)
  5. japanische Lokalisierung von matplotlib (einfach)
  6. Maximale Anzahl der Pandas
  7. Pandas Speicherreduzierung
  8. Zufälliger Startwert behoben

1. Vorlage importieren

Vorlage importieren

import pandas as pd
import numpy as np
import pandas_profiling as pdp
import lightgbm as lgb
import random
from numba import jit

import matplotlib.pyplot as plt
import matplotlib
from matplotlib.dates import DateFormatter
%matplotlib inline
import seaborn as sns

def seed_everything(seed):
    random.seed(seed)
    np.random.seed(seed)
    os.environ['PYTHONHASHSEED'] = str(seed)
    if "tr" in sys.modules:
        tf.random.set_seed(seed)

seed_everything(28)

#Geben Sie die maximale Anzahl der anzuzeigenden Zeilen an (hier werden 50 Zeilen angegeben).
pd.set_option('display.max_rows', 100)
pd.set_option('display.max_columns', 50)

%load_ext autoreload
%autoreload 2
import os

# windows
if os.name == 'nt':
    path = '../input/data/'

    import japanize_matplotlib
    sns.set(font="IPAexGothic")

elif os.name == 'posix':
# Kaggle
    if 'KAGGLE_DATA_PROXY_TOKEN' in os.environ.keys():
        path = '/kaggle/input/'

# Google Colab
    else:
        from google.colab import drive
        drive.mount('/content/drive')
        !ls drive/My\ Drive/'Colab Notebooks'/xxx #xxx umschreiben
        path = "./drive/My Drive/Colab Notebooks/xxx/input/data/" #xxx umschreiben
        #Überprüfen Sie die verbleibende Sitzungszeit
        !cat /proc/uptime | awk '{print $1 /60 /60 /24 "days (" $1 / 60 / 60 "h)"}'

print(os.name)
print(path)

2. Durch Datenleseplattform

Identifizieren der Plattform, auf der Python ausgeführt wird

import os

# windows
if os.name == 'nt':
    #xxx

elif os.name == 'posix':
# Kaggle
    if 'KAGGLE_DATA_PROXY_TOKEN' in os.environ.keys():
        #xxx

# Google Colab
    else:
        #xxx
print(os.name)

3. Automatisches Laden der Bibliothek

Selbst wenn Sie die Bibliothek ändern, wird sie zur Laufzeit automatisch geladen.

%load_ext autoreload
%autoreload 2

Referenz https://qiita.com/Accent/items/f6bb4d4b7adf268662f4

4. Leistungsprofil

Wenn Sie beschleunigen möchten, ist es wichtig, zuerst den Engpass zu finden. Wird voraussichtlich in Notebooks wie Jupyter verwendet. Einfach: %% Zeit ist nützlich, wenn Sie die Verarbeitungszeit in einer Zelle wissen möchten. Details:% lprun ist nützlich, wenn Sie die detaillierte Verarbeitungszeit jeder Zeile wissen möchten.

4.1 %%time Setzen Sie es an den Anfang j der Zelle. Es zeigt die Ausführungszeit der gesamten Zelle an.

%%time
def func(num):
    sum = 0
    for i in range(num):
        sum += i

    return sum

out = func(10000)

4.2 %lprun Es gibt die Ausführungszeit für jede Zeile aus. %% prun ist eine Moduleinheit, daher ist es möglicherweise schwer zu verstehen. % lprun ist zeilenweise leichter zu verstehen.

Unten 3 Schritte. Schritt 0. Installation Schritt 1. Straße Schritt 2. Ausführung

Step0 Installation

Überspringen, falls installiert. Google Coab, Kaggle Cloud-Befehl

!pip install line_profiler

Step1 Road

%load_ext line_profiler

Schritt 2 ausführen

def func(num):
    sum = 0
    for i in range(num):
        sum += i

    return sum

%lprun -f func out = func(10000)

5. japanische Lokalisierung von matplotlib (einfach)

Wenn Sie eine Cloud-Plattform wie Google Colab verwenden, kann es schwierig sein, das System zu ändern. Es ist relativ einfach, da japanische Schriftarten und Pakete automatisch installiert werden.

Beachten Sie, dass seaborn beim Importieren auch die Schriftart festlegt. Führen Sie daher am Ende sns.set aus.

import seaborn as sns
import japanize_matplotlib
sns.set(font="IPAexGothic") ###Stellen Sie sicher, dass Sie zuletzt ausgeführt werden

6. Maximale Anzahl der Pandas

Wenn der DataFrame von Pandas angezeigt wird, wird er nach einer bestimmten Anzahl von Zeilen / Spalten abgekürzt (...). Stellen Sie die maximale Anzahl von Anzeigen ein, um das Auslassen zu steuern.

#Geben Sie die maximale Anzahl der anzuzeigenden Zeilen an (hier werden 50 Zeilen angegeben).
pd.set_option('display.max_rows', 100)
pd.set_option('display.max_columns', 50)

7. Pandas Speicherreduzierung

Der Typ wird automatisch aus dem Bereich der numerischen Werte im Datenrahmen festgelegt.

Referenz von @gemartin https://www.kaggle.com/gemartin/load-data-reduce-memory-usage

# Original code from https://www.kaggle.com/gemartin/load-data-reduce-memory-usage by @gemartin
# Modified to support timestamp type, categorical type
# Modified to add option to use float16 or not. feather format does not support float16.
from pandas.api.types import is_datetime64_any_dtype as is_datetime
from pandas.api.types import is_categorical_dtype

def reduce_mem_usage(df, use_float16=False):
    """ iterate through all the columns of a dataframe and modify the data type
        to reduce memory usage.        
    """
    start_mem = df.memory_usage().sum() / 1024**2
    print('Memory usage of dataframe is {:.2f} MB'.format(start_mem))
    
    for col in df.columns:
        if is_datetime(df[col]) or is_categorical_dtype(df[col]):
            # skip datetime type or categorical type
            continue
        col_type = df[col].dtype
        
        if col_type != object:
            c_min = df[col].min()
            c_max = df[col].max()
            if str(col_type)[:3] == 'int':
                if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max:
                    df[col] = df[col].astype(np.int8)
                elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max:
                    df[col] = df[col].astype(np.int16)
                elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max:
                    df[col] = df[col].astype(np.int32)
                elif c_min > np.iinfo(np.int64).min and c_max < np.iinfo(np.int64).max:
                    df[col] = df[col].astype(np.int64)  
            else:
                if use_float16 and c_min > np.finfo(np.float16).min and c_max < np.finfo(np.float16).max:
                    df[col] = df[col].astype(np.float16)
                elif c_min > np.finfo(np.float32).min and c_max < np.finfo(np.float32).max:
                    df[col] = df[col].astype(np.float32)
                else:
                    df[col] = df[col].astype(np.float64)
        else:
            df[col] = df[col].astype('category')

    end_mem = df.memory_usage().sum() / 1024**2
    print('Memory usage after optimization is: {:.2f} MB'.format(end_mem))
    print('Decreased by {:.1f}%'.format(100 * (start_mem - end_mem) / start_mem))
    
    return df

8. Zufälliger Startwert behoben

Wenn Sie den Startwert der Zufallszahl nicht festlegen, ändert sich das Vorhersageergebnis jedes Mal und der Effekt ist schwer zu verstehen. Korrigieren Sie ihn daher.

Einstellung von Modulen in Bezug auf Zufallszahlen

import numpy as np
import random
import os

def seed_everything(seed):
    random.seed(seed)
    np.random.seed(seed)
    os.environ['PYTHONHASHSEED'] = str(seed)
    if "tr" in sys.modules:
        tf.random.set_seed(seed)

LightGBM-Parameter in Bezug auf Zufallszahlen

lgb_params = {
    'random_state':28,
    'bagging_fraction_seed':28,
    'feature_fraction_seed':28,
    'data_random_seed':28,
    'seed':28
}

Recommended Posts

Organisieren Sie Python-Tools, um die anfängliche Bewegung von Datenanalyse-Wettbewerben zu beschleunigen
Zusammenfassung der Tools, die zum Analysieren von Daten in Python benötigt werden
Numba als Python zu beschleunigen
So beschleunigen Sie Python-Berechnungen
Portiert von der R-Sprache von "Sazae-sans Janken Data Analysis" nach Python
Von der Einführung von JUMAN ++ bis zur morphologischen Analyse von Japanisch mit Python
Wie man die schöne Suppeninstanziierung beschleunigt
Versuchen Sie, die Höhendaten des National Land Research Institute mit Python abzubilden
[Einführung in Data Scientist] Grundlagen von Python ♬
Ich habe eine Funktion erstellt, um die Bewegung eines zweidimensionalen Arrays (Python) zu sehen.
Um Python zu beschleunigen, fassen Sie den Umfang der Berechnung des Sammlungstyps (Liste / Tupel / Wörterbuch / Satz) für jeden Zweck zusammen.
[Python] Von der morphologischen Analyse von CSV-Daten bis zur CSV-Ausgabe und Diagrammanzeige [GiNZA]
Datenanalyse in Python Zusammenfassung der Quellen, die Anfänger zuerst betrachten sollten
Einführung in die statistische Modellierung für die Datenanalyse Erweiterung des Anwendungsbereichs von GLM
Eine Einführung in die Datenanalyse mit Python - Um die Anzahl der Videoansichten zu erhöhen -
Python C / C ++ - Erweiterung: Übergeben Sie einen Teil der Daten als np.array an Python (Schritt setzen)
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Verwendung von Datenanalysetools für Anfänger
[Python] Fluss vom Web-Scraping zur Datenanalyse
Die Geschichte des Lesens von HSPICE-Daten in Python
Geschwindigkeit: Element am Ende des Python-Arrays hinzufügen
[Python] Geben Sie Ihr Bestes, um SQL Alchemy zu beschleunigen
Aufgezeichnete Umgebung für die Datenanalyse mit Python
Versuchen Sie, die Bewegung des Sonnensystems zu simulieren
Datenanalyse Python
Verwendung für Python-Stapel und -Warteschlangen (Geschwindigkeitsvergleich jeder Datenstruktur)
Mit Python + Selenium erhalten Sie Informationen, die der Registerkarte "Netzwerk" der Chrome-Entwicklertools entsprechen
Ich habe versucht, die Verarbeitungsgeschwindigkeit mit dplyr von R und pandas von Python zu vergleichen
Die Wand beim Ändern des Django-Dienstes von Python 2.7 auf Python 3-Serie
Die Python Engineer-Zertifizierungsdatenanalyseprüfung bestanden haben
Vorlage des Python-Skripts zum Lesen des Inhalts der Datei
Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 2
So ermitteln Sie die Anzahl der Stellen in Python
[Python] [Word] [python-docx] Einfache Analyse von Diff-Daten mit Python
[Für Anfänger] So studieren Sie den Python3-Datenanalysetest
Ich habe versucht, das Spiel in der J League vorherzusagen (Datenanalyse)
Option [Python] zum Deaktivieren der Ausgabe von click.progressbar
Berechnen Sie den Regressionskoeffizienten der einfachen Regressionsanalyse mit Python
Fordern Sie die Hauptkomponentenanalyse von Textdaten mit Python heraus
Den Inhalt der Daten in Python nicht kennen
Liste des Python-Codes, der bei der Big-Data-Analyse verwendet wird
Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 1
Schreiben Sie Daten mit dem Python-Anforderungsmodul in KINTONE
Überprüfung des Atcoders ABC158 bis Frage E (Python)
Verwenden wir die offenen Daten von "Mamebus" in Python
[Python] Zusammenfassung, wie die Farbe der Figur angegeben wird
Erläuterung des Konzepts der Regressionsanalyse mit Python Extra 1
14 Tests, um den überraschend verwirrenden Umfang von Python zu verstehen
Verstehen Sie den Status des Datenverlusts - Python vs. R.
[Einführung in Python] Grundlegende Verwendung der Bibliothek matplotlib
Um das Äquivalent von Rubys ObjectSpace._id2ref in Python zu tun
Die Website von "The Hitchhiker's Guide to Python" wurde vollständig übersetzt.
[Technisches Buch] Einführung in die Datenanalyse mit Python -1 Kapitel Einführung-
Python Hinweis: Das Rätsel, einer Variablen eine Variable zuzuweisen
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ruft den Wert eines bestimmten Schlüssels bis zum angegebenen Index der Wörterbuchliste in Python ab
Geben Sie die Bilddaten mit Flask of Python zurück und zeichnen Sie sie in das Canvas-Element von HTML
(Möglicherweise) Python 3 Engineer-Zertifizierungsdatenanalyse-Test, den Sie selbst bestehen können