[PYTHON] In 100 Tagen sind Sie Ingenieur. ――Tag 78 ――Programmieren ――Über maschinelles Lernen 3

Klicken Sie hier bis gestern

Sie werden in 100 Tagen Ingenieur - Tag 76 - Programmierung - Über maschinelles Lernen

Sie werden Ingenieur in 100 Tagen - Tag 70 - Programmieren - Über Scraping

Sie werden in 100 Tagen Ingenieur - Tag 66 - Programmierung - Über die Verarbeitung natürlicher Sprache

Sie werden in 100 Tagen Ingenieur - Tag 63 - Programmierung - Über Wahrscheinlichkeit 1

Sie werden in 100 Tagen Ingenieur - Tag 59 - Programmierung - Über Algorithmen

Sie werden in 100 Tagen Ingenieur --- Tag 53 - Git - Über Git

Sie werden in 100 Tagen Ingenieur - Tag 42 - Cloud - Über Cloud-Dienste

Sie werden in 100 Tagen Ingenieur - Tag 36 - Datenbank - Über die Datenbank

Sie werden Ingenieur in 100-Tage-24-Python-Grundlagen der Python-Sprache 1

Sie werden in 100 Tagen Ingenieur - Tag 18 - JavaScript - Grundlagen von JavaScript 1

Sie werden in 100 Tagen Ingenieur - 14. Tag - CSS - CSS-Grundlagen 1

Sie werden in 100 Tagen Ingenieur - Tag 6 - HTML - HTML-Grundlagen 1

Diese Zeit ist eine Fortsetzung der Geschichte über maschinelles Lernen.

Über den Datenverarbeitungsfluss des maschinellen Lernens

Der Arbeitsfluss beim Einbeziehen von maschinellem Lernen ist wie folgt.

  1. Bestimmen Sie den Zweck
  2. Datenerfassung
  3. Datenverständnis / Auswahl / Verarbeitung
  4. Erstellung des Data Mart (Datensatz)
  5. Modellerstellung
  6. Überprüfung der Genauigkeit
  7. Systemimplementierung

Davon werden 2-3 Teile als Datenvorverarbeitung bezeichnet.

Dieses Mal möchte ich über das Datenverständnis in dieser Vorverarbeitung sprechen.

Informationen zum Datenverständnis

Lassen Sie uns grob erklären, wie die Datenvorverarbeitung beim maschinellen Lernen aussieht, aber machen wir es mit etwas Code.

Sprache ist Python Bibliotheken für maschinelles Lernen sind "Pandas" und "Numpy" Die Bibliothek zur Visualisierung verwendet "seaborn", "matplotlib".

** Laden der Bibliothek **

#Bibliothek laden
import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')

%matplotlib inline

** Datenangaben **

Die diesmal verwendeten Daten sind die "Titanic Passagierliste".

PassengerID:Passagierausweis
Survived:Überlebensergebnis(0=Tod, 1=Überleben)
Pclass:Passagierklasse(Ich scheint der Beste zu sein)
Name:Passagier-Name
Sex:Sex
Age:Alter
SibSp Anzahl der Brüder und Ehepartner
Parch Anzahl der Eltern und Kinder
Ticket Ticketnummer
Tarifgebühr
Kabinenraumnummer
Eingeschiffter Hafen an Bord

Angenommen, Sie haben eine Datei mit dem Namen "titanic_train.csv".

** Datei lesen **

In der Pandas-Bibliothek gibt es viele Lesemethoden für das Dateiformat "read_xxx". Verwenden Sie sie daher zum Lesen der Datei. Diesmal handelt es sich um eine CSV-Datei, also um "read_csv".

Die Pandas-Bibliothek ist eine Bibliothek, die Datenformate verarbeitet, die als tabellarische Datenrahmen bezeichnet werden. Laden Sie die Datei in den Datenrahmen.

#Daten aus Datei lesen
file_path = 'data/titanic_train.csv'
train_df = pd.read_csv(file_path,encoding='utf-8')
train_df.head()
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 1 0 3 Braund, Mr. Owen Harris male 22 1 0 A/5 21171 7.25 NaN S
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38 1 0 PC 17599 71.2833 C85 C
2 3 1 3 Heikkinen, Miss. Laina female 26 0 0 STON/O2. 3101282 7.925 NaN S
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35 1 0 113803 53.1 C123 S
4 5 0 3 Allen, Mr. William Henry male 35 0 0 373450 8.05 NaN S

Die Daten sehen so aus. Mit Datenrahmen können Sie mit Daten in Zeilen und Spalten arbeiten.

** Daten prüfen **

Überprüfen Sie zunächst den Datenrahmen. Mal sehen, welche Art von Spalten es gibt.


print(train_df.columns)
print(len(train_df.columns))

Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'], dtype='object') 12

Als nächstes folgt die Bestätigung des Datentyps. In der Pandas-Bibliothek ist der Datentyp für jede Spalte festgelegt. Es ist notwendig, je nach Typ zu arbeiten.

train_df.dtypes

PassengerId int64 Survived int64 Pclass int64 Name object Sex object Age float64 SibSp int64 Parch int64 Ticket object Fare float64 Cabin object Embarked object dtype: object

object ist ein Datentyp wie eine Zeichenfolge, und die anderen sind numerische Datentypen.

** Spaltenreferenz ** Sie können sich auch spaltenweise auf die Daten im Datenrahmen beziehen. Wenn Sie eine Zeichenfolge für eine Spalte oder einen Spaltennamen vom Listentyp für mehrere Spalten angeben, können Sie nur auf diese Daten verweisen.

Datenrahmen [Spaltenname] Datenrahmen [[Spaltenname, Spaltenname]]

** Grundlegende Aggregation von Datenrahmen **

Das erste, was Sie tun müssen, wenn Sie die Daten erhalten, ist die grundlegende Tabellierung. Pandas können grundlegende Statistiken für Datenrahmen berechnen.

#Grundlegende Statistik numerischer Daten
train_df.describe()
PassengerId Survived Pclass Age SibSp Parch Fare
count 891 891 891 714 891 891 891
mean 446 0.383838 2.308642 29.699118 0.523008 0.381594 32.204208
std 257.353842 0.486592 0.836071 14.526497 1.102743 0.806057 49.693429
min 1 0 1 0.42 0 0 0
25% 223.5 0 2 20.125 0 0 7.9104
50% 446 0 3 28 0 0 14.4542
75% 668.5 1 3 38 1 0 31
max 891 1 3 80 8 6 512.3292

Holen Sie sich die grundlegenden Statistiken für numerische Spalten. Sie können sehen, wie viele Daten vorhanden sind und wie sie aussehen.

** Datentyp bestätigen ** Welche Datenkategorie und wie viel gibt es, da Daten vom Typ Zeichenfolgen nicht einfach aggregiert werden können? Sie kann mit einer Methode namens "value_counts" berechnet werden.

Datenrahmen ['Spaltenname']. Value_counts ()

train_df['Pclass'].value_counts()

3 491 1 216 2 184 Name: Pclass, dtype: int64

** Gruppierung nach Aggregation **

Verwenden Sie group by, um eine Aggregation mit mehreren Spalten durchzuführen.

Datenrahmen [['Spaltenname', 'Spaltenname', 'Spaltenname']]. Groupby (['Spaltenname', 'Spaltenname']). Aggregate function ()

#Bestätigung der Anzahl der Überlebenden nach Geschlecht(0:Tod, 1:Überleben)
train_df[['Sex','Survived','PassengerId']].groupby(['Sex','Survived']).count()
PassengerId
Sex Survived
female 0 81
1 233
male 0 468
1 109

Mit der gruppierten Aggregation können Sie verschiedene Aggregationen durchführen. (Durchschnitt, Minimum, Maximum usw.)

Betrachtet man dies, so scheint es einen erheblichen Unterschied zwischen der Überlebensrate von Frauen und der Überlebensrate von Männern zu geben. Viele Männer sind "Survived = 0" und können in überwältigenden Booten sterben sehen.

** Kreuztabelle **

Sie können Kreuztabellen (Zählen der Stückzahl) durchführen, indem Sie mehrere Spalten zusammenfassen.

pd.crosstab (Datenrahmen [Spaltenname], Datenrahmen [Spaltenname])

pd.crosstab ([Datenrahmen [Spaltenname], Datenrahmen [Spaltenname]], [Datenrahmen [Spaltenname], Datenrahmen [Spaltenname]])

pd.crosstab([train_df['Sex'], train_df['Survived']], train_df['Pclass'])
Pclass 1 2 3
Sex Survived
female 0 3 6 72
1 91 70 72
male 0 77 91 300
1 45 17 47
pd.crosstab([train_df['Sex'], train_df['Survived']], [train_df['Pclass'], train_df['Embarked']],margins=True)
Pclass 1 2 3
Embarked C Q S C Q S C Q S
Sex Survived
female 0 1 0 2 0 0 6 8 9 55
1 42 1 46 7 2 61 15 24 33
male 0 25 1 51 8 1 82 33 36 231
1 17 0 28 2 0 15 10 3 34
All 85 2 127 17 3 164 66 72 353

Wir werden untersuchen, um welche Art von Daten es sich handelt, indem wir eine solche Aggregation für jede Spalte durchführen.

** Datenvisualisierung **

Sie können die Daten mit matplotlib visualisieren.

Diagramme können aus Daten wie Histogrammen, Balkendiagrammen und Streudiagrammen erstellt werden. Zeichnen wir ein Histogramm.

Das Histogramm ist ein Diagramm, wenn die horizontale Achse der Wert und die vertikale Achse die Zahl ist. Der Bin ist die Anzahl der Stufen, wenn die Daten in Stufen unterteilt werden.

** Histogramm anzeigen **

Datenrahmen ['Spaltenname']. Plot (kind = 'hist', bin = Anzahl der Bins)

Datenrahmen ['Spaltenname']. Hist (bin = Anzahl der Bins)

train_df['Fare'].plot(figsize=(16, 5),kind='hist',bins=20)
plt.show()

image.png

train_df['Age'].plot(figsize=(16, 5),kind='hist',bins=20)
plt.show()

image.png

** Zustandsspezifikation **

Durch Hinzufügen von Extraktionsbedingungen zum Datenrahmen können Sie das, was Sie visualisieren möchten, in Ebenen unterteilen.

Datenrahmen [bedingter Ausdruck] ['Spaltenname']

Bedingungen Symbol
und Zustand &
oder Zustand |
Im Falle einer Nichtbedingung ~
#Extrahieren Sie Datenrahmen, indem Sie Bedingungen angeben
train_df[train_df['Survived']==0]['Age'].head()

0 22.0 4 35.0 5 NaN 6 54.0 7 2.0 Name: Age, dtype: float64

#Zeichnen Sie ein Histogramm für Überlebende und Tote nach Alter
train_df[train_df['Survived']==0]['Age'].hist(figsize=(16,5),bins=16,color="#F8766D", alpha=0.3)
train_df[train_df['Survived']==1]['Age'].hist(figsize=(16,5),bins=16,color="#5F9BFF", alpha=0.3)
plt.show()

image.png

#Zeichnen Sie nur für Männer ein Histogramm, das für Überlebende und Tote nach Alter getrennt ist
train_df[(train_df['Survived']==0)&(train_df['Sex']=='male')]['Age'].hist(figsize=(16,5),bins=10,color="#F8766D", alpha=0.3)
train_df[(train_df['Survived']==1)&(train_df['Sex']=='male')]['Age'].hist(figsize=(16,5),bins=10,color="#5F9BFF", alpha=0.3)
plt.show()

image.png

#Nur Frauen zeichnen ein Histogramm separat für Überlebende und Tote nach Alter
train_df[(train_df['Survived']==0)&(train_df['Sex']=='female')]['Age'].hist(figsize=(16,5),bins=10,color="#F8766D", alpha=0.3)
train_df[(train_df['Survived']==1)&(train_df['Sex']=='female')]['Age'].hist(figsize=(16,5),bins=10,color="#5F9BFF", alpha=0.3)
plt.show()

image.png

Die Visualisierung der Ergebnisse verschiedener Tabellen erleichtert das Erkennen der Unterschiede und das Auffinden von Dingen, die bei der Vorhersage der Daten wahrscheinlich effektiv sind.

Es ist ersichtlich, dass zwischen der Verteilung der Männer und der Verteilung der Frauen ein erheblicher Unterschied in Leben und Tod besteht.

Als nächstes zeigen wir das Streudiagramm an.

** Streudiagramm anzeigen **

Das Streudiagramm ist "Streuung". Da es sich um eine Visualisierung mit zwei numerischen Werten handelt, geben Sie zwei Spalten mit einigen numerischen Werten an.

Datenrahmen [['Spaltenname', 'Spaltenname']]. Plot (x = 'horizontaler Spaltenname', y = 'vertikaler Spaltenname', Art = 'Streuung')

train_df[['Fare','Age']].plot(x='Fare', y='Age', figsize=(16, 9),kind='scatter')
plt.show()

image.png

Ich möchte nach Geschlecht färben, aber da die Daten eine Zeichenfolge sind, muss ich sie nummerieren. Fügen Sie eine Spalte hinzu und ersetzen Sie den Wert durch den in einen numerischen Wert konvertierten Typ.

** Spalte für Datenrahmen hinzufügen **

Datenrahmen ['Spaltenname'] = Wert

** Ersetzen von Zeichen im Datenrahmen **

Dataframe.replace ({'Zeichenfolge vor dem Ersetzen': Wert nach dem Ersetzen})

#Geschlechtsquantifizierung(0 Männer,1 Frau)
train_df['Sex2'] = train_df['Sex'].replace({'male':0,'female':1})
train_df.head()
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked Sex2
0 1 0 3 Braund, Mr. Owen Harris male 22 1 0 A/5 21171 7.25 NaN S 0
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38 1 0 PC 17599 71.2833 C85 C 1
2 3 1 3 Heikkinen, Miss. Laina female 26 0 0 STON/O2. 3101282 7.925 NaN S 1
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35 1 0 113803 53.1 C123 S 1
4 5 0 3 Allen, Mr. William Henry male 35 0 0 373450 8.05 NaN S 0

Ganz am Ende haben Sie eine Spalte mit dem Geschlecht 0,1.

Sie haben jetzt eine Wertespalte mit dem Geschlecht "Geschlecht" hinzugefügt.

Ich werde es ausmalen und ein Streudiagramm zeichnen.

#Färbung der Streukarte(0 Männer,1 Frau)
train_df[['Fare','Age']].plot(x='Fare', y='Age', figsize=(16, 5),kind='scatter',c=train_df['Sex2'],cmap='winter')
plt.show()

image.png

Lassen Sie uns die Überlebenden und die Toten farblich kennzeichnen.

#Färbung der Streukarte(0:Tod, 1:Überleben)
train_df[['Fare','Age']].plot(x='Fare', y='Age', figsize=(16, 5),kind='scatter',c=train_df['Survived'],cmap='winter')
plt.show()

image.png

Ich denke, es fühlt sich ziemlich ähnlich an, wenn es nach Geschlecht und Leben oder Tod farblich gekennzeichnet ist.

** Visualisierung mit Seaborn **

Es gibt eine Bibliothek namens "seaborn", um "matplotlib" etwas schöner darzustellen. Es gibt auch eine Visualisierungsmethode, die von matplotlib in seaborn La Ibrari nicht ausgedrückt werden kann.

Ein Streudiagramm numerischer Daten wird zusammen angezeigt.

sns.pairplot (Datenrahmen, Farbton" String Type Type Column ")

#Wenn Werte fehlen, können einige nicht angezeigt werden. Füllen Sie daher die fehlenden Werte mit dem Durchschnittswert.
for name in ['Age']:
    train_df[name] = train_df[name].fillna(train_df[name].mean())

train_df['Survived2'] = train_df['Survived'].replace({0:'death',1:'survived'})
train_df['Sex2'] = train_df['Sex'].replace({'male':0,'female':1})

# pairplot
#Überprüfen Sie die Korrelation zwischen Datenreihen
#Für dieselben Daten wird ein Balkendiagramm und für verschiedene Daten ein Streudiagramm angezeigt.
sns.pairplot(train_df[['Pclass','Age','Fare','Sex2','Survived2']], hue="Survived2")
plt.show()

image.png

factorplot

Faktorplot kann Diagramme nach Faktor sortieren.

factorplot (x = 'horizontaler Spaltenname', y = 'vertikaler Spaltenname', Farbton = 'Typ Spaltenname', col = 'Spaltenname', Daten = Datenrahmen)

# factorplot (Typvergleichsdiagramm)
sns.factorplot(x='Pclass', y='Age', hue='Survived', col='Sex2', data=train_df)
plt.show()

image.png

Sie können es in einen Box-Whisker ändern, indem Sie kind = 'box' hinzufügen.

sns.factorplot(x='Pclass', y='Age', hue='Survived', col='Sex2',kind='box', data=train_df)
plt.show()

image.png

lmplot

Es ist ein Diagramm, das ein Streudiagramm und eine lineare Regressionslinie zwischen zwei Variablen visualisiert.

sns.lmplot (x = Spalte der horizontalen Achse, y = Spalte der vertikalen Achse, Farbton = 'Färbungssache', Daten = Datenrahmen, x_bins = Bin-Wert)

#Geben Sie die Altersgruppe an
generations = [10,20,30,40,50,60,70,80]
#Zeichnen Sie die Kundendemografie, die Überlebensrate nach Alter und die Regressionslinie
sns.lmplot('Age', 'Survived', hue='Pclass', data=train_df,hue_order=[1,2,3], x_bins=generations)
plt.show()

image.png

Zusammenfassung

Um die Daten zu verstehen, aggregieren Sie das Ganze, um zu verstehen, welche Art von Daten verfügbar ist, und probieren Sie verschiedene Visualisierungen durch Schichtung aus. Mal sehen, welche Art von Datenverteilung es hat.

Organisieren Sie nach dem Betrachten der Daten, welche Art von Daten für die Vorhersage verwendet werden können. Von hier aus werden wir die Daten korrigieren, die für maschinelles Lernen verwendet werden können.

Lassen Sie uns zuerst den rauen Fluss lernen.

22 Tage bis Sie Ingenieur werden

Informationen zum Autor

HP von Otsu py: http://www.otupy.net/

Youtube: https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter: https://twitter.com/otupython

Recommended Posts

In 100 Tagen sind Sie Ingenieur. ――Tag 81 ――Programmieren ――Über maschinelles Lernen 6
In 100 Tagen sind Sie Ingenieur. ――Tag 82 ――Programmieren ――Über maschinelles Lernen 7
In 100 Tagen sind Sie Ingenieur. ――Tag 79 ――Programmieren ――Über maschinelles Lernen 4
In 100 Tagen sind Sie Ingenieur. ――Tag 76 ――Programmieren ――Über maschinelles Lernen
In 100 Tagen sind Sie Ingenieur. ――Tag 80 ――Programmieren ――Über maschinelles Lernen 5
In 100 Tagen sind Sie Ingenieur. ――Tag 78 ――Programmieren ――Über maschinelles Lernen 3
Sie werden in 100 Tagen Ingenieur. ――Tag 84 ――Programmieren ――Über maschinelles Lernen 9
In 100 Tagen sind Sie Ingenieur. ――Tag 83 ――Programmieren ――Über maschinelles Lernen 8
In 100 Tagen sind Sie Ingenieur. ――Tag 77 ――Programmieren ――Über maschinelles Lernen 2
In 100 Tagen sind Sie Ingenieur. ――Tag 85 ――Programmieren ――Über maschinelles Lernen 10
In 100 Tagen sind Sie Ingenieur. ――Tag 71 ――Programmieren ――Über das Schaben 2
In 100 Tagen sind Sie Ingenieur. ――Tag 74 ――Programmieren ――Über das Schaben 5
In 100 Tagen sind Sie Ingenieur. ――Tag 73 ――Programmieren ――Über das Schaben 4
In 100 Tagen sind Sie Ingenieur. ――Tag 75 ――Programmieren ――Über das Schaben 6
In 100 Tagen sind Sie Ingenieur. ――Tag 68 ――Programmieren ――Über TF-IDF
In 100 Tagen sind Sie Ingenieur. ――Tag 70 ――Programmieren ――Über das Schaben
Sie werden in 100 Tagen Ingenieur - Tag 63 - Programmierung - Wahrscheinlichkeit 1
Sie werden in 100 Tagen Ingenieur. ――Tag 65 ――Programmieren ――Über Wahrscheinlichkeit 3
Sie werden in 100 Tagen Ingenieur. ――Tag 64 ――Programmieren ――Über Wahrscheinlichkeit 2
Sie werden in 100 Tagen Ingenieur - Tag 86 - Datenbank - Über Hadoop
In 100 Tagen sind Sie Ingenieur. ――Tag 60 ――Programmieren ――Über Datenstruktur und Sortieralgorithmus
Sie werden in 100 Tagen Ingenieur - 27. Tag - Python - Python-Übung 1
Sie werden in 100 Tagen Ingenieur - Tag 34 - Python - Python-Übung 3
Sie werden in 100 Tagen Ingenieur. ――Tag 67 ――Programmieren ――Über morphologische Analyse
Sie werden in 100 Tagen Ingenieur. ――Tag 24 ―― Python ―― Grundlagen der Python-Sprache 1
Sie werden in 100 Tagen Ingenieur. ――Tag 30 ―― Python ―― Grundlagen der Python-Sprache 6
Sie werden in 100 Tagen Ingenieur. ――Tag 25 ―― Python ―― Grundlagen der Python-Sprache 2
Sie werden in 100 Tagen Ingenieur - 29. Tag - Python - Grundlagen der Python-Sprache 5
Sie werden in 100 Tagen Ingenieur - Tag 33 - Python - Grundlagen der Python-Sprache 8
Sie werden in 100 Tagen Ingenieur - 26. Tag - Python - Grundlagen der Python-Sprache 3
Sie werden in 100 Tagen Ingenieur - Tag 35 - Python - Was Sie mit Python tun können
Sie werden in 100 Tagen Ingenieur - Tag 32 - Python - Grundlagen der Python-Sprache 7
Sie werden in 100 Tagen Ingenieur - 28. Tag - Python - Grundlagen der Python-Sprache 4
Werden Sie bald KI-Ingenieur! Lernen Sie in wenigen Tagen umfassend Python / KI / Maschinelles Lernen / Deep Learning / Statistische Analyse!
Sie müssen vorsichtig mit den Befehlen sein, die Sie jeden Tag in der Produktionsumgebung verwenden.
Erstellen Sie mit Python eine interaktive Umgebung für maschinelles Lernen
Über das Testen bei der Implementierung von Modellen für maschinelles Lernen
Maschinelles Lernen Über Overlearning
Programmieren des Lernprotokolls 2. Tag
Bis ein Ingenieur, der einmal über maschinelles Lernen frustriert war, es schafft, maschinelles Lernen bei der Arbeit einzusetzen
[Maschinelles Lernen] Fassen wir die zufällige Gesamtstruktur auf leicht verständliche Weise zusammen
Maschinelles Lernen in Delemas (Praxis)
Über maschinelles Lernen gemischte Matrix
Python Machine Learning Programming> Schlüsselwörter
Wird in EDA für maschinelles Lernen verwendet
Wie wäre es mit Anaconda zum Erstellen einer maschinellen Lernumgebung mit Python?
Lernen Sie maschinelles Lernen jederzeit und überall in der bedarfsgesteuerten Jupyter Notebook-Umgebung