table des matières Chapitre 1: Modèle de régression linéaire [Chapitre 2: Modèle de régression non linéaire] (https://qiita.com/matsukura04583/items/baa3f2269537036abc57) [Chapitre 3: Modèle de régression logistique] (https://qiita.com/matsukura04583/items/0fb73183e4a7a6f06aa5) [Chapitre 4: Analyse des composants principaux] (https://qiita.com/matsukura04583/items/b3b5d2d22189afc9c81c) [Chapitre 5: Algorithme 1 (méthode de voisinage k (kNN))] (https://qiita.com/matsukura04583/items/543719b44159322221ed) [Chapitre 6: Algorithme 2 (k-means)] (https://qiita.com/matsukura04583/items/050c98c7bb1c9e91be71) [Chapitre 7: Support Vector Machine] (https://qiita.com/matsukura04583/items/6b718642bcbf97ae2ca8)
x=(x_1,x_2,・ ・ ・,x_m)^T \in R^m
y \in \left\{0,1\right\}
Google Drive Mount
from google.colab import drive
drive.mount('/content/drive')
#depuis le nom du module importer le nom de la classe (ou le nom de la fonction ou le nom de la variable)
import pandas as pd
from pandas import DataFrame
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
#Magie pour l'affichage de matplotlib en ligne(plt.show()Tu n'as pas à)
%matplotlib inline
Dans ce qui suit, le dossier study_ai_ml est utilisé directement sous Mon Drive dans Google Drive.
#Lire le fichier csv de données titanesques
titanic_df = pd.read_csv('/content/drive/My Drive/study_ai_ml/data/titanic_train.csv')
#Afficher le début du fichier et vérifier l'ensemble de données
titanic_df.head(5)
J'ai examiné la signification des variables.
ID du passager: ID du passager Survived: Survival result (1: Survival, 0: Death) Pclass: La classe de passagers 1 est la classe la plus élevée Nom: nom du passager Sexe: Genre Âge: âge SibSp Nombre de frères et conjoints Parch Nombre de parents et d'enfants Numéro de billet Frais d'embarquement Numéro de chambre cabine Ports embarqués à bord de Cherbourg, Queenstown, Southampton
#Déposez-le parce que vous pensez qu'il n'est pas nécessaire pour la prédiction
titanic_df.drop(['PassengerId','Pclass', 'Name', 'SibSp','Parch','Ticket','Fare','Cabin','Embarked'], axis=1, inplace=True)
#Afficher les données avec certaines colonnes supprimées
titanic_df.head()
#Afficher les lignes contenant null
titanic_df[titanic_df.isnull().any(1)].head(10)
#Compléter la valeur NULL dans la colonne Âge avec la médiane
titanic_df['AgeFill'] = titanic_df['Age'].fillna(titanic_df['Age'].mean())
#Afficher à nouveau les lignes contenant null(L'âge nul est complété)
titanic_df[titanic_df.isnull().any(1)]
#titanic_df.dtypes
#titanic_df.head()
#Parce que j'ai renseigné la valeur manquante de Age Fill
#titanic_df = titanic_df.drop(['Age'], axis=1)
#Définir femme 0 homme 1 dans le sexe
titanic_df['Gender'] = titanic_df['Sex'].map({'female': 0, 'male': 1}).astype(int)
titanic_df.head()
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))
Puisque 1 est un homme, 0 une femme, le rouge est mort et le bleu est vivant, il est distribué comme si un nombre relativement important de femelles étaient vivantes.
#Créez une liste d'âge et de sexe uniquement
data2 = titanic_df.loc[:, ["AgeFill", "Gender"]].values
data2
résultat
array([[22. , 1. ],
[38. , 0. ],
[26. , 0. ],
...,
[29.69911765, 0. ],
[26. , 1. ],
[32. , 1. ]])
Faisons un graphique de survie par âge
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)
Étant donné que les valeurs d'âge manquantes sont renseignées en moyenne, il y en a beaucoup au milieu. Essayez à nouveau de créer un graphique avec les données en excluant les valeurs manquantes.
temp = [i["Age"].dropna() for i in split_data]
plt.hist(temp, histtype="barstacked", bins=16)
Vérifiez le taux de survie des hommes et des femmes avec une carte de pile
temp = [i["Gender"].dropna() for i in split_data]
plt.hist(temp, histtype="barstacked", bins=16)
C'est devenu comme ça.
##Créez une liste d'indicateurs de vie et de mort uniquement
label2 = titanic_df.loc[:,["Survived"]].values
from sklearn.linear_model import LogisticRegression
model2 = LogisticRegression()
model2.fit(data2, label2)
résultat
/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)
Prédire un homme de 30 ans
model2.predict([[30,1]])
résultat
array([0])```
```python
model2.predict([[30,1]])
résultat
array([1])
model2.predict_proba([[30,1]])
La prédiction zéro (mort) est renvoyée
résultat
array([0])
Je regarde l'établissement de ce jugement
model2.predict_proba([[30,1]])
résultat
array([[0.80664059, 0.19335941]])
Le taux de 80% de probabilité de décès et 20% de probabilité de survie peut être vu.
Sites connexes
Chapitre 1: Modèle de régression linéaire [Chapitre 2: Modèle de régression non linéaire] (https://qiita.com/matsukura04583/items/baa3f2269537036abc57) [Chapitre 3: Modèle de régression logistique] (https://qiita.com/matsukura04583/items/0fb73183e4a7a6f06aa5) [Chapitre 4: Analyse des composants principaux] (https://qiita.com/matsukura04583/items/b3b5d2d22189afc9c81c) [Chapitre 5: Algorithme 1 (méthode de voisinage k (kNN))] (https://qiita.com/matsukura04583/items/543719b44159322221ed) [Chapitre 6: Algorithme 2 (k-means)] (https://qiita.com/matsukura04583/items/050c98c7bb1c9e91be71) [Chapitre 7: Support Vector Machine] (https://qiita.com/matsukura04583/items/6b718642bcbf97ae2ca8)
Recommended Posts