[PYTHON] <Subjekt> Maschinelles Lernen Kapitel 3: Logistisches Regressionsmodell

Maschinelles Lernen

Inhaltsverzeichnis Kapitel 1: Lineares Regressionsmodell [Kapitel 2: Nichtlineares Regressionsmodell] (https://qiita.com/matsukura04583/items/baa3f2269537036abc57) [Kapitel 3: Logistisches Regressionsmodell] (https://qiita.com/matsukura04583/items/0fb73183e4a7a6f06aa5) [Kapitel 4: Hauptkomponentenanalyse] (https://qiita.com/matsukura04583/items/b3b5d2d22189afc9c81c) [Kapitel 5: Algorithmus 1 (k-Nachbarschaftsmethode (kNN))] (https://qiita.com/matsukura04583/items/543719b44159322221ed) [Kapitel 6: Algorithmus 2 (k-Mittel)] (https://qiita.com/matsukura04583/items/050c98c7bb1c9e91be71) [Kapitel 7: Support Vector Machine] (https://qiita.com/matsukura04583/items/6b718642bcbf97ae2ca8)

Kapitel 3: Logistisches Regressionsmodell

Beschreibung des logistischen Regressionsmodells

   x=(x_1,x_2,・ ・ ・,x_m)^T \in R^m     
     y \in \left\{0,1\right\}    

LOG3.jpg

(Übung 3) Prognostizieren Sie die Überlebensrate eines 30-jährigen Mannes mithilfe des Titanic-Datensatzes

Google Drive Mount

from google.colab import drive
drive.mount('/content/drive')

0. Datenanzeige

#aus Modulname Importklassenname (oder Funktionsname oder Variablenname)
import pandas as pd
from pandas import DataFrame
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

#Magie für die Anzeige von Matplotlib inline(plt.show()Das musst du nicht)
%matplotlib inline

Im Folgenden wird der Ordner study_ai_ml direkt unter Mein Laufwerk in Google Drive verwendet.

#Lesen Sie die CSV-Datei mit Titandaten
titanic_df = pd.read_csv('/content/drive/My Drive/study_ai_ml/data/titanic_train.csv')
#Zeigen Sie den Anfang der Datei an und überprüfen Sie den Datensatz
titanic_df.head(5)
スクリーンショット 2019-12-12 14.20.19.png

Ich habe die Bedeutung von Variablen untersucht.

Passagier-ID: Passagier-ID Überlebt: Überlebensergebnis (1: Überleben, 0: Tod) Klasse: Passagierklasse 1 ist die höchste Klasse Name: Name des Passagiers Geschlecht: Geschlecht Alter: Alter SibSp Anzahl der Brüder und Ehepartner Parch Anzahl der Eltern und Kinder Ticket Ticketnummer Tarifgebühr Kabinenraumnummer Eingeschiffte Häfen an Bord von Cherbourg, Queenstown, Southampton

1. Logistische Regression

Nicht benötigte Daten löschen / fehlende Werte ergänzen

#Lassen Sie es fallen, weil Sie denken, dass es für die Vorhersage nicht notwendig ist
titanic_df.drop(['PassengerId','Pclass', 'Name', 'SibSp','Parch','Ticket','Fare','Cabin','Embarked'], axis=1, inplace=True)

#Zeigen Sie Daten mit einigen abgelegten Spalten an
titanic_df.head()

LOG1.jpg

#Zeilen anzeigen, die null enthalten
titanic_df[titanic_df.isnull().any(1)].head(10)

LOG2.jpg

#Vervollständigen Sie null in der Spalte Alter mit Median

titanic_df['AgeFill'] = titanic_df['Age'].fillna(titanic_df['Age'].mean())

#Zeigen Sie erneut Zeilen mit Null an(Das Alter Null wird ergänzt)
titanic_df[titanic_df.isnull().any(1)]

#titanic_df.dtypes
#titanic_df.head()

LOG3.jpg

1. Logistische Regression

Umsetzung (Leben oder Tod anhand von Geschlecht und Alter bestimmen)

#Weil ich den fehlenden Wert von Age Fill eingegeben habe
#titanic_df = titanic_df.drop(['Age'], axis=1)
#Stellen Sie weiblich 0 männlich 1 in Geschlecht ein
titanic_df['Gender'] = titanic_df['Sex'].map({'female': 0, 'male': 1}).astype(int)
titanic_df.head()

LOG4.jpg

Zeichnen wir die Verteilung von Leben und Tod nach Geschlecht und Alter

np.random.seed = 0

xmin, xmax = -5, 85
ymin, ymax = -0.5, 1.3

index_survived = titanic_df[titanic_df["Survived"]==0].index
index_notsurvived = titanic_df[titanic_df["Survived"]==1].index

from matplotlib.colors import ListedColormap
fig, ax = plt.subplots()
cm = plt.cm.RdBu
cm_bright = ListedColormap(['#FF0000', '#0000FF'])
sc = ax.scatter(titanic_df.loc[index_survived, 'AgeFill'],
                titanic_df.loc[index_survived, 'Gender']+(np.random.rand(len(index_survived))-0.5)*0.1,
                color='r', label='Not Survived', alpha=0.3)
sc = ax.scatter(titanic_df.loc[index_notsurvived, 'AgeFill'],
                titanic_df.loc[index_notsurvived, 'Gender']+(np.random.rand(len(index_notsurvived))-0.5)*0.1,
                color='b', label='Survived', alpha=0.3)
ax.set_xlabel('AgeFill')
ax.set_ylabel('Gender')
ax.set_xlim(xmin, xmax)
ax.set_ylim(ymin, ymax)
ax.legend(bbox_to_anchor=(1.4, 1.03))

LOG5.jpg

Da 1 männlich, 0 weiblich, rot tot und blau lebendig ist, wird es so verteilt, als ob eine relativ große Anzahl von Frauen lebt.

#Erstellen Sie nur eine Liste mit Alter und Geschlecht
data2 = titanic_df.loc[:, ["AgeFill", "Gender"]].values
data2

Ergebnis


array([[22.        ,  1.        ],
       [38.        ,  0.        ],
       [26.        ,  0.        ],
       ...,
       [29.69911765,  0.        ],
       [26.        ,  1.        ],
       [32.        ,  1.        ]])

Lassen Sie uns ein Überlebensdiagramm nach Alter erstellen

split_data = []
for survived in [0,1]:
    split_data.append(titanic_df[titanic_df.Survived==survived])

temp = [i["AgeFill"].dropna() for i in split_data ]
plt.hist(temp, histtype="barstacked", bins=16)

LOG6.jpg

Da die fehlenden Alterswerte im Durchschnitt ausgefüllt werden, gibt es viele in der Mitte. Versuchen Sie erneut, die Daten mit Ausnahme der fehlenden Werte grafisch darzustellen.

temp = [i["Age"].dropna() for i in split_data]
plt.hist(temp, histtype="barstacked", bins=16)

LOG7.jpg

Überprüfen Sie die Überlebensrate von Männern und Frauen mit einer Stapelkarte

temp = [i["Gender"].dropna() for i in split_data]
plt.hist(temp, histtype="barstacked", bins=16)

LOG8.jpg Es wurde so.

1. Logistische Regression

Implementierung (Bestimmen Sie Leben oder Tod aus 2 Variablen)

##Erstellen Sie nur eine Liste mit Lebens- und Todesflaggen
label2 =  titanic_df.loc[:,["Survived"]].values
from sklearn.linear_model import LogisticRegression
model2 = LogisticRegression()
model2.fit(data2, label2)

Ergebnis


/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.
  FutureWarning)
/usr/local/lib/python3.6/dist-packages/sklearn/utils/validation.py:724: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
                   intercept_scaling=1, l1_ratio=None, max_iter=100,
                   multi_class='warn', n_jobs=None, penalty='l2',
                   random_state=None, solver='warn', tol=0.0001, verbose=0,
                   warm_start=False)

Sagen Sie einen 30-jährigen Mann voraus

model2.predict([[30,1]])

Ergebnis


array([0])```


```python
model2.predict([[30,1]])

Ergebnis


array([1])
model2.predict_proba([[30,1]])

Die Null-Vorhersage (Todesvorhersage) wird zurückgegeben

Ergebnis


array([0])

Ich beobachte die Errichtung dieses Urteils

model2.predict_proba([[30,1]])

Ergebnis


array([[0.80664059, 0.19335941]])

Die Rate von 80% Todeswahrscheinlichkeit und 20% Überlebenswahrscheinlichkeit ist zu sehen.

Verwandte Seiten

Kapitel 1: Lineares Regressionsmodell [Kapitel 2: Nichtlineares Regressionsmodell] (https://qiita.com/matsukura04583/items/baa3f2269537036abc57) [Kapitel 3: Logistisches Regressionsmodell] (https://qiita.com/matsukura04583/items/0fb73183e4a7a6f06aa5) [Kapitel 4: Hauptkomponentenanalyse] (https://qiita.com/matsukura04583/items/b3b5d2d22189afc9c81c) [Kapitel 5: Algorithmus 1 (k-Nachbarschaftsmethode (kNN))] (https://qiita.com/matsukura04583/items/543719b44159322221ed) [Kapitel 6: Algorithmus 2 (k-Mittel)] (https://qiita.com/matsukura04583/items/050c98c7bb1c9e91be71) [Kapitel 7: Support Vector Machine] (https://qiita.com/matsukura04583/items/6b718642bcbf97ae2ca8)

Recommended Posts

<Subjekt> Maschinelles Lernen Kapitel 3: Logistisches Regressionsmodell
<Kurs> Maschinelles Lernen Kapitel 1: Lineares Regressionsmodell
<Kurs> Maschinelles Lernen Kapitel 2: Nichtlineares Regressionsmodell
Logistische Regression beim maschinellen Lernen
Algorithmus für maschinelles Lernen (logistische Regression)
<Kurs> Maschinelles Lernen Kapitel 6: Algorithmus 2 (k-Mittel)
<Kurs> Maschinelles Lernen Kapitel 7: Support Vector Machine
<Kurs> Maschinelles Lernen Kapitel 4: Hauptkomponentenanalyse
Lineare Regression des maschinellen Lernens
Memo zum Kurs für maschinelles Lernen
Modell des maschinellen Lernens unter Berücksichtigung der Wartbarkeit
Maschinelles Lernen: Überwacht - Lineare Regression
Coursera-Herausforderungen beim maschinellen Lernen in Python: ex2 (Logistic Return)
Verstehe maschinelles Lernen ~ Ridge Regression ~.
Überwachtes maschinelles Lernen (Klassifikation / Regression)
Stapelvorlage für maschinelles Lernen (Rückgabe)
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Regression zu bewerten
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 7 Regressionsanalyse
[Maschinelles Lernen] Verständnis der logistischen Regression sowohl durch Scikit-Lernen als auch durch Mathematik
[Sprachverarbeitung 100 Schläge 2020] Kapitel 6: Maschinelles Lernen
Anfänger des maschinellen Lernens versuchen eine lineare Regression
Algorithmus für maschinelles Lernen (multiple Regressionsanalyse)
Algorithmus für maschinelles Lernen (Einzelregressionsanalyse)
100 Sprachverarbeitung Knock 2020 Kapitel 6: Maschinelles Lernen
Klassifikation und Regression beim maschinellen Lernen
Inverse Analyse des maschinellen Lernmodells
Logistische Rückgabe
Logistische Rückgabe
Maschinelles Lernen
Anfänger des maschinellen Lernens nehmen an Courseras Deep Learning-Kurs teil
Algorithmus für maschinelles Lernen (Verallgemeinerung der linearen Regression)
Maschinelles Lernen mit Python (2) Einfache Regressionsanalyse
TensorFlow Kochbuch zum maschinellen Lernen Kapitel 2 Persönlich verstopft
Aktienkursprognose mit maschinellem Lernen (Return Edition)
Algorithmus für maschinelles Lernen (Zusammenfassung und Regularisierung der linearen Regression)
TensorFlow Kochbuch zum maschinellen Lernen Kapitel 3 Persönlich verstopft
[Maschinelles Lernen] Regressionsanalyse mit Scicit Learn
Gaußscher EM-Algorithmus mit gemischtem Modell [statistisches maschinelles Lernen]
Ich habe versucht, die beim maschinellen Lernen verwendeten Bewertungsindizes zu organisieren (Regressionsmodell).
TensorFlow Machine Learning Cookbook Kapitel 6 (oder besser gesagt die dritte Zeile), in dem ich persönlich feststeckte
Coursera-Herausforderungen beim maschinellen Lernen in Python: ex3 (Handschriftliche Zahlenerkennung mit logistischer Rekursion)
EV3 x Python Maschinelles Lernen Teil 2 Lineare Regression
Klassifizieren Sie Informationen zum maschinellen Lernen nach Themenmodellen
[Memo] Maschinelles Lernen
Klassifikation des maschinellen Lernens
Implementieren Sie mit stan ein zeitdiskretes logistisches Regressionsmodell
Beispiel für maschinelles Lernen
Python-Lernnotiz für maschinelles Lernen von Chainer aus Kapitel 2
Python Scikit-learn Lineare Regressionsanalyse Nichtlineare einfache Regressionsanalyse Maschinelles Lernen
Maschinelles Lernen mit Bildern der Kategorie Caffe -1 unter Verwendung eines Referenzmodells
Coursera Machine Learning Challenge in Python: ex1 (lineare Regression)
Versuchen Sie, das Modell des maschinellen Lernens in das Python-Paket aufzunehmen
[Maschinelles Lernen] Textklassifizierung mit dem Transformer-Modell (Aufmerksamkeitsbasierter Klassifikator)
xgboost: Effektives Modell für maschinelles Lernen für Tabellendaten
Zusammenfassung des Lernprogramms für maschinelles Lernen
Maschinelles Lernen Über Overlearning
Maschinelles Lernen ⑤ AdaBoost-Zusammenfassung
Maschinelles Lernen: Betreut --AdaBoost