Aidemy 2020/10/30
Einführung
Hallo, es ist ja! Ich bin eine knusprige Literaturschule, aber ich war an den Möglichkeiten der KI interessiert, also ging ich zur KI-Fachschule "Aidemy", um zu studieren. Ich möchte das hier gewonnene Wissen mit Ihnen teilen und habe es in Qiita zusammengefasst. Ich freue mich sehr, dass viele Menschen den vorherigen zusammenfassenden Artikel gelesen haben. Vielen Dank!
Dies ist der zweite Beitrag von "Data Analysis Titanic". Freut mich, dich kennenzulernen.
- Dieser Artikel ist eine Zusammenfassung dessen, was Sie in "Aidemy" "in Ihren eigenen Worten" gelernt haben. Es kann Fehler und Missverständnisse enthalten. Bitte beachten Sie.
Was diesmal zu lernen
・ ④ Musteranalyse, Datenanalyse (Fortsetzung der vorherigen Zeit)
・ ③ Daten gestalten, erstellen, bereinigen (zurückgeben) → __ Neue Funktionen erstellen __
④ Musteranalyse, Datenanalyse
Analyse der vorherigen Pivot-Tabelle (Korrelation)
・ Wenn Pclass = 1 ist, beträgt der Durchschnitt der Überlebenden 0,62, und es kann gesagt werden, dass es eine signifikante (positive) Korrelation gibt, die 0,5 überschreitet. Daher sollte Pclass als Merkmal des Modells verwendet werden. Und.
- Ähnlich wie bei Sex = weiblich beträgt der Durchschnitt der Überlebenden 0,74, sodass dies auch als Merkmal des Modells verwendet wird.
- Da es keine signifikante Korrelation zwischen __SibSp und Parch __ gab, erstellen Sie eine neue Feature-Menge, indem Sie die beiden __ kombinieren.
Daten visualisieren
Erstellen Sie ein Histogramm, indem Sie den Altersbereich angeben
-__ Um die Hypothese zu bestätigen, dass "Kinder eine hohe Überlebensrate haben" __, geben Sie den Bereich der __Age-Daten an und teilen Sie ihn __. Verwenden Sie diese Option, um eine Datenverteilung mit __dialog __ zu erstellen.
-Für dieses Histogramm ist die horizontale Achse Alter, aber die vertikale Achse ist die Anzahl der Daten, dh die Anzahl der Passagiere. Seien Sie also vorsichtig.
-Das Histogramm kann mit __ "df.hist ()" __ erstellt werden. Wie viele Klassen erstellt werden sollen (wie viele Daten müssen geteilt werden), kann durch __ "bins =" __ im Argument angegeben werden, und wenn Survive die Anzahl der Daten von 0 bzw. 1 sehen möchte __ Sie können den Parameter mit "by =" __ angeben.
- Wie in Kapitel 1 zu sehen ist, enthält __Age fehlende Werte __. Löschen Sie daher zuerst die fehlenden Werte mit dropna.
·Code
・ Ergebnis (Grafik)
・ Wenn wir uns die Ergebnisse ansehen, können wir sehen, dass __ "0-5 Jahre alt" eine hohe Überlebensrate hat __.
・ Wenn wir uns die Gesamtzahl der Daten ansehen, können wir auch feststellen, dass die Anzahl der __ "15-35 Jahre alt" groß ist __.
Korrelation von Merkmalen mit "Kategoriewert und Zahlenwert"
・ Als nächstes wird das Histogramm für jedes im vorherigen Abschnitt erstellte Alter für jede __P-Klasse weiter visualisiert.
-Der Code erstellt ein Histogramm für __Survived and Age und schreibt es so, dass es durch __ "by = train_df ['Pclass']" __ geteilt wird.
·Code
・ Grafik (tot)
・ Grafik (Überlebender)
・ Aus dieser Grafik geht hervor, dass __ "Es gibt überwiegend viele Todesfälle mit P-Klasse = 3" "Viele Überlebende mit P-Klasse = 1" "Viele Überlebende mit Alter von P-Klasse = 2 und 3 sind 0 bis 5 Jahre alt" __ Sie können sehen, dass. Es kann gesagt werden, dass beide als hypothetisch sind.
Korrelation von Merkmalen mit "Kategoriewert"
- Erstellen Sie die Beziehung zwischen "Überlebt" und "P-Klasse / Geschlecht", wenn __ "Eingeschifft" __ __ ['C', 'Q', 'S'] __ in der Pivot-Tabelle und __ "plt ist. Es wird durch plot () "__ veranschaulicht.
-Erstellen Sie die Pivot-Tabelle auf die gleiche Weise wie in Kapitel 1. Vergessen Sie nicht, den Inhalt von __Embarked dieses Mal mit einem bedingten Ausdruck __ anzugeben. Da es zwei Gruppen (Aggregate) gibt, Pclass und Sex, übergeben Sie diese als Liste.
-Sex teilt die erstellte Pivot-Tabelle durch male und female und sortiert sie in der Reihenfolge Pclass.
-Dies wird durch __ "plt.plot ()" __ veranschaulicht. Die x-Achse ist __ ['1', '2', '3'] __ und die y-Achse ist die Anzahl der __Überlebten Daten __.
-Code (wenn __Embarked = 'C' __. Die anderen beiden werden auf die gleiche Weise erstellt) (Das geschnittene Teil ist das gleiche wie beim vorherigen Mal)
・ Grafik (nur wenn Embarked = 'C', die anderen beiden sind ähnliche Grafiken)
・ Aus dieser Grafik geht hervor, dass __ "Die Überlebensrate von Frauen überwältigend hoch ist" __. Dies ist auch die Hypothese. Es wurde auch festgestellt, dass, obwohl hier nicht gezeigt, __ "Männer mit Embarked = 'Q' eine sehr niedrige Überlebensrate haben" __.
Korrelation zwischen Merkmalsgrößen mit "Kategoriewert" und Merkmalsgrößen mit "Zahlenwert"
- Ersetzen Sie diesmal den Teil __ "P-Klasse" im vorherigen Abschnitt durch "Survived" und den Teil "Survived" durch "Fare" und zeigen Sie sie genauso an.
- Sobald die Beziehung zwischen "Tarif" und "Überlebt / Geschlecht" in der Pivot-Tabelle erstellt wurde, besteht der nächste Schritt darin, sie danach zu teilen, ob "Überlebt" 0 oder 1 ist. Dieses Mal wird es durch subplot __ dargestellt. __ Sie können dies mit "plt.subplot ()" __ tun. Die horizontale Achse ist __ "Geschlecht" __ Die vertikale Achse ist __ "Tarif" __ Ein Balkendiagramm ( plt.bar () __) ist festgelegt, die linke ist __ "Überlebt == 0" __ und die rechte ist __ Stellen Sie so ein, dass "Survived == 1" __.
③ Daten gestalten, erstellen, bereinigen
- Von hier aus wird __Feature Conversion / Creation / Completion __ durchgeführt.
Daten löschen
- Löschen Sie zunächst, wie in Kapitel 1 entschieden, __ "Ticket" und "Kabine" mit vielen Fehlern und Duplikaten __.
-Verwenden Sie __ "drop (axis = 1)" __, da die Spalte gelöscht wird.
Neue Funktionen erstellen
- Ähnlich werden __ "Name" und "Passagier-ID", die eindeutig nicht mit Survived korreliert sind, ebenfalls gelöscht __, aber die __-Titel (Mr, Mrs, Dr, etc.) sind in "Name" und Survived enthalten Möglicherweise liegt eine Korrelation __ vor. Überprüfen Sie sie daher.
- Um den Titel aus dem Namen zu extrahieren, verwenden Sie __ regulären Ausdruck __. Verwenden Sie __ "str.extract ('regulärer Ausdruck')" , um den Teil zu extrahieren, der dem regulären Ausdruck entspricht, aus den Daten des Str-Typs. Der reguläre Ausdruck ist diesmal __ '([A-Za-z] +) \ .'. Dies wird so ausgedrückt, weil vor dem "." Im Titel mehrere Groß- und Kleinbuchstaben stehen, z. B. "Dr.". Außerdem wird in diesem zweiten Argument __ "expand = False" __ angegeben, was darauf hinweist, dass die extrahierten Daten in DataFrame zurückgegeben werden.
-Dieses extrahierte Produkt wird in einer neuen Spalte (Merkmalsmenge) mit dem Namen __ 'Titel' __ gespeichert.
-Die Beziehung zwischen __ 'Titel' und 'Sex' __ ist __ "Kreuztabelle" __. In diesem Beispiel ist dies eine Zusammenfassung von __Wie viele Sex-Elemente für jede Titelkategorie wie Dr. und Frau __ erschienen sind.
- Verwenden Sie die Funktion __ "pd.crosstab ()" __, um Kreuztabellen durchzuführen. Übergeben Sie die Daten für die Ergebniszeile (in diesem Fall __ 'Titel' ) an das erste Argument und die Daten für die Ergebnisspalte ( 'Geschlecht' __) an das zweite Argument.
・ Code![Screenshot 2020-10-23 15.28.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/3a3d54fa-669e-ec58- d0cd-c0463cabf909.png)
・ Ergebnis (nur Teil)![Screenshot 2020-10-23 15.29.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/b946ce52 -b42c-6610-b702-733193b204d0.png)
・ Von den hier angezeigten Titeln sind die weniger häufigen im anderen Frame mit dem Namen __ "'Rare'" __ zusammengefasst. Ersetzen Sie außerdem "Meile" durch "Frau" und "Frau" durch "Frau", die dieselbe Bedeutung haben. Diese Ersetzungen können mit __ "replace ()" __ erfolgen.
・ Wenn Sie diesen Punkt erreicht haben, erstellen Sie eine Pivot-Tabelle und überprüfen Sie die Korrelation.
・ Code![Screenshot 2020-10-23 15.53.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/f5fbcf9e-4689-7002- c398-1e91950f9a23.png)
-Für diesen Titel möchte ich jedes Element als numerischen Wert behandeln, also konvertiere es in __ {"Mr": 1, "Miss": 2, "Mrs": 3, "Master": 4, "Rare": 5} __ Machen.
-Die Methode kann konvertiert werden, indem die obige Entsprechungstabelle (Wörterbuch) erstellt und die Funktion __ "map ()" __ auf den Datensatz ['Titel'] angewendet wird.
-Wenn die folgende Ausführung abgeschlossen ist, löschen Sie __ "Name" und "Passagier-ID" wie ursprünglich erwartet __.
・ Code![Screenshot 2020-10-23 16.06.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/5943862b-98ea-c3c3- 5043-4354df7e6780.png)
・ Ergebnis![Screenshot 2020-10-23 16.06.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/5943862b-98ea-c3c3- 5043-4354df7e6780.png)
Konvertieren Sie mehrwertige Daten in Binärdaten
- Mit der im vorherigen Abschnitt verwendeten Funktion __map () __ konvertieren Sie im nächsten Schritt __multivalisierte Daten in Binärdaten .
-Hier konvertieren Sie __ 'Sex' __ in __ männlich: 0, weiblich: 1.
-Wenn __ Datentyp __ im Argument der Methode __astype () __ angegeben ist, wird ein neuer DataFrame mit allen angegebenen Datentypen aller geänderten Spalten zurückgegeben. Da wir diesmal alle int-Typen erstellen möchten, geben Sie im Argument int an.
·Code
Ergänzung der Feature-Menge Alter
- Führen Sie nach dem Löschen, Konvertieren und Erstellen von Daten __complement __ aus. Die Vervollständigung ist __ Erraten und Zuweisen von __ Wert zu Null oder NaN.
- Ergänzen Sie zunächst die fortlaufenden numerischen Daten __ "Alter" __. Es gibt die folgenden drei Methoden zur Komplementation.
1: Generieren Sie eine Zufallszahl, indem Sie sich auf den Durchschnitt beziehen
2: Korreliert __ Siehe andere Merkmalsmengen __
3: Kombinieren Sie 1 und 2 __, um eine Zufallszahl mit Bezug auf Mittelwert und Standardabweichung zu generieren
・ Dieses Mal wird die Methode __ "2" __ verwendet. Insbesondere gibt es zwei Merkmalsgrößen, die mit "Alter" korrelieren: __ "Geschlecht" und "P-Klasse" . Unter Bezugnahme auf diese beiden Merkmalsgrößen wird der geschätzte Wert des Alters ( Zwischenalter__) erhalten.
- Bereiten Sie zunächst ein leeres Array mit 2 Zeilen und 3 Spalten vor, um den Wert von Alter __ zu speichern. Wenn Sie ein Array erstellen, weil die spezifische Größe der Matrix auf diese Weise bekannt ist, ist es besser, __ "np.zeros ()" __ zu verwenden. Durch Angabe der Form der Matrix im Argument ist es möglich, ein ( praktisch leeres __) Array mit allen 0-Werten zu erstellen.
・ Berechnen Sie als Nächstes den geschätzten Wert für Alter (__ Zwischenalter__). Extrahieren Sie zunächst den Wert von 'Alter' für alle Kombinationen von 'Sex' und 'Klasse' (ohne NaN). Da es __ "2 * 3 Wege" __ Kombinationen gibt, wird die Größe der Matrix als __ (2,3) __ angegeben. Wenn Sie dagegen __ "median ()" __ verwenden, um den __median __ zu erhalten, ist dies das mittlere Alter.
- Speichern Sie den Medianwert jeweils im Array von (2,3) und beenden Sie.
・ Code![Screenshot 2020-10-24 11.45.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/8635098f-1cc3-b47d- 3fde-5d38456d4077.png)
·Ergebnis
Konvertieren Sie kontinuierliche Werte in diskrete Werte
AgeBand
- Konvertieren Sie nach Abschluss von Age den gesamten kontinuierlichen Wert Age in __diskreten Wert __. Dies geschieht, um die Vorhersage zu vereinfachen, indem der __-Bereich angegeben und __ geteilt wird (= Konvertieren in diskrete Daten), wie im Abschnitt der Richtlinie "Erstellung" in Kapitel 1 gezeigt.
- Die Konvertierung in diskrete Werte wird als __ "Binning-Verarbeitung" __ oder __ "Bin-Division" __ bezeichnet. Verwenden Sie dazu __ "pd.cut ()" __. Daten werden an das erste Argument übergeben, und __wie viele Datenabteilungen im zweiten Argument angegeben sind. Dieses Mal wird es in 5 Teile unterteilt und als diskrete Daten in einer neuen Feature-Menge namens __ "AgeBand" __ gespeichert.
-Auch ich möchte die Korrelation zwischen AgeBand und Survived überprüfen, also erstelle ich auch eine __pivot-Tabelle __.
・ Code![Screenshot 2020-10-24 15.05.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/7e4a2eb9-9049-f7bf- 089f-9bc99492ab70.png)
-Nächste wird das in diskrete Werte konvertierte Alter in Ordnungsdaten __ konvertiert. Wenn AgeBand __ "0 ~ 16" ist, wird es in 0 konvertiert, wenn es "16 ~ 32" ist, wird es in 1 konvertiert, wenn es "32 ~ 48" ist, wird es in 2 konvertiert und wenn es "48 ~ 64" ist, wird es in 3 konvertiert. ..
-Die Konvertierungsmethode besteht darin, den Bereich von 'Alter' mit __loc [bedingter Ausdruck, zu konvertierende Spalte] __ zu extrahieren und durch den obigen numerischen Wert zu ersetzen.
・ Wenn Sie fertig sind, löschen Sie AgeBand mit __drop () __.
・ Code![Screenshot 2020-10-24 15.06.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/91f81220-3eec-8b5e- a75e-54730478ecb5.png)
Neue Funktionen erstellen
FamilySize
- Erstellen Sie, wie unter "Erstellen" der Richtlinie gezeigt, einen neuen Funktionsbetrag mit dem Namen "Familiengröße", indem Sie die Funktionsbeträge "Parch" und "Sibsp" des gleichen Systems kombinieren. Diese Feature-Menge steht für __ "Anzahl der Familien" __.
-Die Methode ist normalerweise __ extrahieren Sie einfach die beiden Spalten und addieren Sie sie __. Da ich jedoch auch in der "Anzahl der Familien" enthalten bin, vergessen Sie nicht die __ "+1" __ für diesen Betrag.
- Wenn Sie eine neue Feature-Menge erstellen, nehmen Sie den Durchschnitt mit Survived wie zuvor und überprüfen Sie die __Korrelation __.
・ Code![Screenshot 2020-10-24 15.07.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/20905888-8aa5-75a6- c0de-58a3afe6aa48.png)
IsAlone
-Die oben genannte FamilySize wird als __ "einzeln oder familienfreundlich" __ klassifiziert, um sie abstrakter zu gestalten. Das heißt, wenn FamilySize 1 ist, wird es als "IsAlone = 1" konvertiert, andernfalls wird es als "IsAlone = 0" konvertiert.
- Als Methode zum Erstellen von __ erstellen Sie zunächst eine Feature-Menge mit dem Namen __IsAlone, wobei alle Werte auf "0" gesetzt sind, und konvertieren Sie sie nur dann in "1", wenn FamilySize = 1 ist (verwenden Sie __loc () __).
・ Wenn Sie diesen Punkt erreicht haben, löschen Sie __Parch, SibSp und FamilySize __.
・ Code![Screenshot 2020-10-24 15.07.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/0bac092b-b650-d823- 22d6-f72c14bf151b.png)
Age*Class
-Hier erstellen wir ein künstliches Merkmal namens __ "Alter * Klasse" __, das durch Multiplizieren von "Alter" mit "Grad der Kabine" gewichtet wird. Um es zu machen, extrahieren Sie einfach Age und Pclass so wie es ist.
Ergänzung mit dem häufigsten Wert eingeschifft
- Wie in Kapitel 1 zu sehen ist, fehlen in __Embarked der Trainingsdaten __ zwei Werte. Für diesen fehlenden Wert löschen Sie zuerst __ und ersetzen Sie diesen Teil durch __ den häufigsten Wert __. Der häufigste Wert ist übrigens __ "S" __.
-Der häufigste Wert kann mit __ "mode ()" __ erhalten werden. Da wir nur den häufigsten Wert erhalten möchten (Index ist nicht erforderlich), erhalten wir auch nur eine Spalte mit [0].
-Der erfasste häufigste Wert wird in der Variablen freq_port gespeichert und mit __ "fillna (freq_port)" __ ergänzt.
·Code
- Ebenso wie Sex usw. ist Embarked ein Kategoriewert, daher wird er in einen numerischen Wert wie __ {'S': 0, 'C': 1, 'Q': 2} __ konvertiert. .. Verwenden Sie die Funktion __map () __. Verwenden Sie außerdem __astype (int) __.
·Code
Ergänzende numerische Daten Tarif
- In __Fare der Testdaten __ fehlt nur ein Wert. Der Medianwert (median) ersetzt diesen fehlenden Wert.
- Außerdem wird __Fare, das ein kontinuierlicher Wert ist, wie Age in einen diskreten Wert __ umgewandelt. Speichern Sie die konvertierte Version in einer neuen Feature-Menge namens FareBand. Diskrete Werte werden berechnet, indem der Tarif in vier Teile geteilt wird.
-Im Fall von Alter wurde der Bereich durch __ "cut ()" __ geteilt, aber dies wird verwendet, wenn __ "dividieren, so dass der Bereich gerade" __ ist. Andererseits wird in diesem Tarif "__qcut () __" verwendet, wenn "so geteilt wird, dass die Anzahl der im Bereich __ enthaltenen __Elemente gerade ist".
・ Code![Screenshot 2020-10-24 17.00.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/2e191c9f-1baf-a732- b0c1-cebc72c7d1e8.png)
- Beziehen Sie sich auf dieses Tarifband und ersetzen Sie den Tarif durch einen diskreten Wert. Dieses Mal ist __ "~ 7,91" 0, "7,91 ~ 14,454" ist 1, "14,454 ~ 31" ist 2, "31 ~" ist 3__ und so weiter.
-Die Konvertierungsmethode ist dieselbe wie für Alter __ "loc [bedingter Ausdruck, zu konvertierende Spalte]" __.
·Code
Zusammenfassung
・ Die Korrelation mit der Zielvariablen __ "Survived" wurde untersucht __ und diejenigen mit einer signifikanten Korrelation wurden so wie sie waren verwendet, und diejenigen ohne eine signifikante Korrelation wurden aus dem Titel Tirle extrahiert. Sie können beispielsweise den - Teil der Variablen herausnehmen und ein neues Feature erstellen, oder Sie können ein neues Feature erstellen, indem Sie Parch und SibSp __FamilySize kombinieren.
- Außerdem werden kontinuierliche Werte wie Alter und Tarif in diskrete Werte umgewandelt, um Merkmalsmengen umzuwandeln. __ Wenn es fehlende Werte enthält, verwenden Sie den Median oder die häufigsten Werte, um die Werte zu vervollständigen. __.
-Seit Geschlecht und Eingeschifft sind Daten wie [männlich, weiblich] [S, C, Q], ersetzen Sie sie durch numerische Daten wie __ [0,1] [0,1,2] __.
Diese Zeit ist vorbei. Vielen Dank für das Lesen bis zum Ende.