[PYTHON] Lesen von Originaldaten oder externen Daten im Internet mit scikit-learn anstelle eines angehängten Datensatzes wie Iris

Viele Bücher und Online-Lehrmaterialien zum Scikit-Lernen verwenden angehängte Datensätze wie Iris und Krebs. Natürlich gibt es ein Gefühl der Sicherheit, dass die gleichen Ergebnisse leicht erzielt werden können, aber ich denke, dass es vielen Menschen schwer fällt, tiefes Lernen im Einklang mit dem Zeitplan zu erlangen. In diesem Artikel werde ich vorstellen, wie Sie Ihre eigenen Daten oder externen Daten im Internet lesen und mit scicit-learn analysieren können. (Überprüfungsumgebung: Windows10, Anaconda3, Python3.7.6, Jupyter Notebook 6.0.3) Erster Entwurf veröffentlicht 2020/3/23

CSV-Dateivorbereitung

In diesem Artikel als Beispiel die Daten, die von der Community für maschinelles Lernen / Datenwissenschaft Kaggle [Link zum Weltglücksbericht ← Link](https: //www.kaggle) veröffentlicht wurden. .com / unsdsn / world-happy) wird verwendet. Ich habe mich für Kaggle entschieden, weil ich einen Datensatz habe, der für maschinelles Lernen einfach zu verwenden ist. Daher muss ich mich als Benutzer registrieren. Bitte laden Sie von der Schaltfläche "Download (79 KB)". Wenn Sie die Zip-Datei entpacken, finden Sie 5 CSV-Dateien, aber hier verwenden wir 2019.csv.

Bei Verwendung anderer Dateien

--2019.csv ist als "Feature-Name in der ersten Zeile, Daten in der zweiten und nachfolgenden Zeile" angeordnet, damit es von der Python-Datenanalysebibliothek ** pandas ** leicht gelesen werden kann. Für andere Daten bitte durch Löschen der Excel-Zeile formen.

--Wenn das Format anders ist, z. B. eine Excel-Datei (.xls), laden Sie es mit Excel usw., führen Sie dann "Datei speichern unter" aus und wählen Sie das CSV-Dateiformat aus. Wenn das Trennzeichen ausgewählt werden kann, belassen Sie es als (Komma).

――Es ist einfacher, es in dem Ordner zu speichern, in dem sich die ausführbaren Python-Dateien (py- und ipynb-Dateien) befinden.

CSV-Datei lesen

Sie können es direkt laden, ohne die Bibliothek zu verwenden. Um den Rest des Prozesses zu vereinfachen, zeigt Ihnen dieser Artikel, wie Sie Pandas verwenden. (Wenn pandas noch nicht installiert ist, [dieser Artikel] Bitte beziehen Sie sich auf (https://www.sejuku.net/blog/75508) usw. )

import pandas as pd
df = pd.read_csv('2019.csv')

Wenn das Trennzeichen eine Registerkarte ist, fügen Sie das Argument sep = '\ t' hinzu, und wenn es Japanisch enthält, fügen Sie das Argument encoding = 'shift_jis' hinzu. df = pd.read_csv ('filename.csv', sep = '\ t', encoding = 'shift_jis')

Wenn Sie die Datendatei an einem anderen Speicherort als die ausführbare Datei ablegen möchten, fügen Sie "df = pd.read_csv (" data / 2019.csv ")" und einen relativen Pfad hinzu. Referenz → Gegenseitige Umwandlung / Beurteilung des absoluten Pfades und des relativen Pfades mit Python, pathlib

Bestätigung des Merkmalsmengennamens und der Anzahl der Daten

print("Bestätigung des Datensatzschlüssels (Name des Funktionsbetrags)==>:\n", df.keys())
print('Überprüfen Sie die Anzahl der Zeilen und Spalten im Datenrahmen==>\n', df.shape)

Wenn Sie den obigen Befehl ausführen,

Bestätigung des Datensatzschlüssels (Name des Funktionsbetrags)==>:
 Index(['Overall rank', 'Country or region', 'Score', 'GDP per capita',
       'Social support', 'Healthy life expectancy',
       'Freedom to make life choices', 'Generosity',
       'Perceptions of corruption'],
      dtype='object')
Überprüfen Sie die Anzahl der Zeilen und Spalten im Datenrahmen==>
 (156, 9)

Es kann bestätigt werden, dass die Daten von 156 Proben mit 9 Merkmalen gelesen werden können.

Fehlende Werte usw. verarbeiten (Feature Quantity Engineering)

Überprüfen Sie, ob in den Daten Werte (Null) fehlen, und überprüfen Sie den Datentyp, um festzustellen, ob es sich nur um einen ganzzahligen Wert (int) / einen numerischen Wert einschließlich eines Bruchs (float) / einer Zeichenfolge oder einer Mischung aus Zeichenfolgen und numerischen Werten (Objekt) handelt. Ich werde.

#Datenrahmen Überprüfen Sie die Anzahl der nicht fehlenden Daten und den Datentyp in jeder Spalte
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 156 entries, 0 to 155
Data columns (total 9 columns):
 #   Column                        Non-Null Count  Dtype  
---  ------                        --------------  -----  
 0   Overall rank                  156 non-null    int64  
 1   Country or region             156 non-null    object 
 2   Score                         156 non-null    float64
 3   GDP per capita                156 non-null    float64
 4   Social support                156 non-null    float64
 5   Healthy life expectancy       156 non-null    float64
 6   Freedom to make life choices  156 non-null    float64
 7   Generosity                    156 non-null    float64
 8   Perceptions of corruption     156 non-null    float64
dtypes: float64(7), int64(1), object(1)
memory usage: 11.1+ KB

Sie können bestätigen, dass 156 Nicht-Null-Daten vorhanden sind ⇒ ** keine fehlenden Werte **. Der Gesamtrang ist eine Ganzzahl, das Land oder die Region ist eine Zeichenfolge, und ansonsten handelt es sich um einen numerischen Wert, der einen Bruch enthält, und der Datentyp ist wie beabsichtigt. Wenn die Spalte, die die Zahlen enthalten soll, zu einem Objekt geworden ist,

#Extraktion nicht numerischer Elemente
objectlist = df[['Geben Sie den Namen der Feature-Menge ein']][df['Geben Sie den Namen der Feature-Menge ein'].apply(lambda s:pd.to_numeric(s, errors='coerce')).isnull()]
objectlist

Durch Ausführen von ↑ können Sie die Daten extrahieren, die als Zeichenfolge behandelt werden.

Es gab keine Mischung aus Zeichenketten und numerischen Werten oder fehlenden Werten in diesen Daten, aber aus verschiedenen Gründen "Leerzeichen", "Zeichen / Symbole außer" 0 "bedeutet Null" und "Zahlen mit Einheiten". In vielen Fällen gibt es Werte, die für die Analyse so wie sie sind ungeeignet sind.

Bitte lesen Sie diesen Artikel usw. und führen Sie die entsprechende Verarbeitung durch (Feature-Mengen-Engineering).

Erstellen Sie ein Objekt (leeres Dataset) mit einer Datenklasse für Scikit-learn

import sklearn
worldhappiness = sklearn.utils.Bunch()

Bitte ändern Sie den Teil von "Weltglück", um den Datensatznamen anzugeben.

Fügen Sie Daten in den Datensatz ein

# 'Score'(Glück Punktzahl)Die Zielvariable'target'Zu
worldhappiness['target'] = df['Score']
#Erklärende Variablen'data'Einstellen
worldhappiness['data'] = df.loc[:, ['GDP per capita',
       'Social support', 'Healthy life expectancy',
       'Freedom to make life choices', 'Generosity',
       'Perceptions of corruption']]

↑ Geben Sie 6 andere Spalten als die ersten 3 Spalten an (Funktionen, die nicht zur Analyse von Zielvariablen und IDs verwendet werden). Es ist einfach, die Datenausgabe unter "Bestätigung des Namens der Merkmalsmenge" zu kopieren und einzufügen.

#Wenn Sie den Namen des Feature-Betrags angeben, können Sie ihn für die Legende des Diagramms usw. verwenden. (Dies ist nicht erforderlich.)
worldhappiness['feature_names'] = ['GDP per capita',
       'Social support', 'Healthy life expectancy',
       'Freedom to make life choices', 'Generosity',
       'Perceptions of corruption']

Unterteilt in Trainingsset und Testset

#Unterteilt in Trainingsset und Testset
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
    worldhappiness['data'], worldhappiness['target'], random_state=0)
print("X_train shape:", X_train.shape)
print("X_test shape:", X_test.shape)
X_train shape: (117, 6)
X_test shape: (39, 6)

Es wurde in 117 Trainingsdaten und 39 Testdaten unterteilt. (6 ist die Anzahl der erklärenden Variablenelemente)

Fazit

Ich denke, dies wird zur Maschinenanalyse führen. Wenn Sie Fehler oder Fragen haben, können Sie diese gerne kommentieren.

Recommended Posts

Lesen von Originaldaten oder externen Daten im Internet mit scikit-learn anstelle eines angehängten Datensatzes wie Iris
Lesen und Schreiben durch Komprimieren von Variablen wie DataFrame mit joblib anstelle von pickle
Legen Sie Informationen wie die Länge am Rand von NetworkX fest
[Bilderkennung] Lesen des Ergebnisses der automatischen Annotation mit VoTT
Wie man Problemdaten mit Paiza liest
Zusammenfassung zum Lesen numerischer Daten mit Python [CSV, NetCDF, Fortran Binary]
[Linux] Wie man .bashrc eines allgemeinen Benutzers mit WSL2 Ubuntu20.04 auch als Root liest
Checkliste, wie Sie vermeiden können, die Elemente des Numpy-Arrays mit for zu drehen
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
So legen Sie einen freigegebenen Ordner mit dem Host-Betriebssystem in CentOS7 auf Virtual BOX fest
[Python] Berechnungsmethode der Approximationsformel von Abschnitt 0 wie Excel [scikit-learn] Memo
Ein Memo darüber, wie man das schwierige Problem der Erfassung von FX mit AI überwinden kann
Verwendung von xgboost: Mehrklassenklassifizierung mit Irisdaten
Die Entscheidung von scikit-learn Wie man ein Holzmodell visualisiert
[Blender] So legen Sie die Auswahlelemente von EnumProperty dynamisch fest
So installieren Sie Git unter Linux wie EC2
Problemumgehung für Pandas 1.1.0 und höher Build-Fehler unter Alpine Linux
So registrieren Sie dieselben Daten mehrmals mit einer Eingabe auf dem Verwaltungsbildschirm von Django
So berechnen Sie die Summe oder den Durchschnitt von Zeitreihen-CSV-Daten in einem Augenblick
Wie man die Anzahl der GPUs aus Python kennt ~ Hinweise zur Verwendung von Multiprocessing mit pytorch ~
Lesen Sie das Tag, das Ihnen in ec2 mit boto3 zugewiesen wurde
So aktivieren Sie das Lesen / Schreiben von net.Conn mit golang, um mit dem Kontext abzubrechen
So registrieren Sie ein Paket in PyPI (Stand September 2017)
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
Versuchen Sie, Merkmale von Sensordaten mit CNN zu extrahieren
Für diejenigen, die nicht wissen, wie man ein Passwort mit Jupyter auf Docker festlegt
Abfangen oder Manipulieren der SSL-Kommunikation des tatsächlichen iOS-Geräts durch einen Proxy