・ Ceux qui connaissent les grandes lignes de l'apprentissage automatique ・ Ou, pour ceux qui lisent Apprentissage automatique à partir de zéro (Présentation de l'apprentissage automatique)
・ Comprendre Kaggle ・ Comprendre le flux réel de l'apprentissage automatique ・ Pratiquez l'utilisation du tutoriel de Kaggle ・ Pratiquez l'utilisation de scicit-learn
Cette page est une version rééditée de la présentation. Si vous souhaitez voir la présentation originale, veuillez cliquer ici. https://www.edocr.com/v/vlzyelxe/tflare/Kaggle_-Machine-learning-to-learn-at-Kaggle
Si vous le mettez ensemble sans crainte de malentendu "Kaggle est un site où les entreprises et les chercheurs peuvent résoudre des thèmes liés à la science des données et à l'apprentissage automatique. Certains d'entre eux ont des prix (et le code pour les résoudre est publié et expliqué. Explication) Il existe également une fonction pour communiquer avec des commentaires, etc.)
・ Dans les explications telles que les livres, des ensembles de données pour l'explication sont souvent utilisés, et il est difficile de se faire une idée réelle. ・ Vous pouvez comprendre le flux réel de l'apprentissage automatique car il est nécessaire de réaliser même les parties qui sont brisées dans les explications telles que les livres. ・ Parce que le classement sort, je suis motivé. (Vous pouvez concurrencer et coopérer avec des analystes de données du monde entier) ・ Vous recevrez un prix (certains vous donneront un prix de 1,5 million de dollars)
Prédire si les passagers ont survécu au naufrage du Titanic ・ Données d'entraînement (891 lignes x 12 colonnes csv) Certaines données sont manquantes ・ Données de test (418 lignes x 11 colonnes csv) Certaines données sont manquantes ・ Apprenez à partir des données d'entraînement et prédisez si vous avez survécu ou non aux données de test.
-PassengerId: Le numéro attaché aux données de manière séquentielle ・ Survived: Survival (0 = Non, 1 = Yes) Existe uniquement dans les données d'entraînement ・ Pclass: Classe de billet (1 = 1er, 2 = 2ème, 3 = 3ème) · Nom nom ・ Sexe: sexe ・ Âge: Âge ・ SibSp: nombre de frères et de conjoints sur le Titanic ・ Parch: nombre de parents et d'enfants sur le Titanic ・ Ticket: numéro de ticket ・ Tarif: tarif passager ・ Cabine: numéro de cabine ・ Embarqué: Zone d'embarquement (C = Cherbourg, Q = Queenstown, S = Southampton)
Code d'exécution
import numpy as np
import pandas as pd
train = pd.read_csv("train.csv", dtype={"Age": np.float64}, )
test = pd.read_csv("test.csv", dtype={"Age": np.float64}, )
train.head(10)
Code d'exécution
train_corr = train.corr()
train_corr
Il semble que vous puissiez utiliser autre chose que PassengerId. Puisqu'il y a des données qui ne sont pas actuellement utilisées pour l'analyse, elles seront converties en données utilisables (valeur numérique). De plus, il manque des données, corrigez-les.
Code d'exécution
def correct_data(titanic_data):
titanic_data.Age = titanic_data.Age.fillna(titanic_data.Age.median())
titanic_data.Sex = titanic_data.Sex.replace(['male', 'female'], [0, 1])
titanic_data.Embarked = titanic_data.Embarked.fillna("S")
titanic_data.Embarked = titanic_data.Embarked.replace(['C', 'S', 'Q'], [0, 1, 2])
titanic_data.Fare = titanic_data.Fare.fillna(titanic_data.Fare.median())
return titanic_data
train_data = correct_data(train)
test_data = correct_data(test)
Code d'exécution
train_corr = train.corr()
train_corr
Cette fois, nous utiliserons les éléments suivants. ・ Classe de billet ·sexe ·âge ・ Nombre de frères et conjoints sur le Titanic ・ Nombre de parents et d'enfants sur le Titanic ・ Tarif passager · Zone d'embarquement
・ Retour logistique ・ Machine de vecteur de soutien ・ Méthode K-la plus proche · Arbre de décision ・ Forêt aléatoire ·réseau neuronal
Les références Voir ci-dessous pour plus de détails sur les méthodes d'apprentissage. L'apprentissage automatique a commencé avec Python Fonctionnalités apprises avec scikit-learn Principes de base de l'ingénierie et de l'apprentissage automatique https://www.oreilly.co.jp/books/9784873117980/
Code d'exécution
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC, LinearSVC
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import cross_val_score
predictors = ["Pclass", "Sex", "Age", "SibSp", "Parch", "Fare", "Embarked"]
models = []
models.append(("LogisticRegression",LogisticRegression()))
models.append(("SVC",SVC()))
models.append(("LinearSVC",LinearSVC()))
models.append(("KNeighbors",KNeighborsClassifier()))
models.append(("DecisionTree",DecisionTreeClassifier()))
models.append(("RandomForest",RandomForestClassifier()))
models.append(("MLPClassifier",MLPClassifier(solver='lbfgs', random_state=0)))
En validation croisée, le jeu de données est divisé en données d'entraînement et données de test (ici, 3 divisions). C'est une méthode pour stabiliser la précision en évaluant chaque
Code d'exécution
results = []
names = []
for name,model in models:
result = cross_val_score(model, train_data[predictors], train_data["Survived"], cv=3)
names.append(name)
results.append(result)
Le résultat divisé en 3 est moyenné et évalué. Random forest a donné de bons résultats.
Code d'exécution
for i in range(len(names)):
print(names[i],results[i].mean())
LogisticRegression 0.785634118967
SVC 0.687991021324
LinearSVC 0.58810325477
KNeighbors 0.701459034792
DecisionTree 0.766554433221
RandomForest 0.796857463524
MLPClassifier 0.785634118967
Basé sur ce que vous avez appris dans Random Forest Prédisez avec les données de test et envoyez le résultat au format csv.
Code d'exécution
alg = RandomForestClassifier()
alg.fit(train_data[predictors], train_data["Survived"])
predictions = alg.predict(test_data[predictors])
submission = pd.DataFrame({
"PassengerId": test_data["PassengerId"],
"Survived": predictions
})
submission.to_csv('submission.csv', index=False)
Taux de réponse correcte 0,74163 Il était 7043e sur 7922 personnes. Je suis un peu déçu, je vais donc l'optimiser.
Si vous utilisez la recherche par grille, les hyper paramètres seront automatiquement optimisés. Cependant, veuillez noter que son exécution prend beaucoup de temps.
Code d'exécution
parameters = {
'n_estimators' : [5, 10, 20, 30, 50, 100, 300],
'max_depth' : [3, 5, 10, 15, 20, 25, 30, 40, 50, 100]
'random_state' : [0],
}
gsc = GridSearchCV(RandomForestClassifier(), parameters,cv=3)
gsc.fit(train_data[predictors], train_data["Survived"])
Appliquons le résultat optimisé par ce qui précède.
Taux de réponse correcte 0,77990 Je suis allé au 4129e sur 7922 personnes.
J'ai reçu un commentaire lorsque j'ai publié le code sur Kaggle. Il était préférable de trouver les valeurs manquantes à partir des données de test plutôt qu'à partir des données d'entraînement. Je l'ai essayé. Le code modifié est illustré ci-dessous.
Code d'exécution
def correct_data(train_data, test_data):
# Make missing values for training data from test data as well
train_data.Age = train_data.Age.fillna(test_data.Age.median())
train_data.Fare = train_data.Fare.fillna(test_data.Fare.median())
test_data.Age = test_data.Age.fillna(test_data.Age.median())
test_data.Fare = test_data.Fare.fillna(test_data.Fare.median())
train_data = correct_data_common(train_data)
test_data = correct_data_common(test_data)
return train_data, test_data
def correct_data_common(titanic_data):
titanic_data.Sex = titanic_data.Sex.replace(['male', 'female'], [0, 1])
titanic_data.Embarked = titanic_data.Embarked.fillna("S")
titanic_data.Embarked = titanic_data.Embarked.replace(['C', 'S', 'Q'], [0, 1, 2])
return titanic_data
train_data, test_data = correct_data(train, test)
** Taux de réponse correcte 0,79426 ** ** Je suis allé au 2189e sur 7922 personnes. ** **
・ Analysez le nom. (Pouvez-vous deviner d'ici parce qu'il y a M. Mme Miss etc.)
· Utilisez une méthode d'apprentissage différente (par exemple XGBoost, LightGBM)
grid search
** Vérification croisée **
Prudential Life Insurance Assessment ・ Pouvez-vous faciliter l'achat d'une assurance-vie? ・ Calculez le niveau de risque à partir des attributs du demandeur d'assurance-vie ・ Prix de 30 000 dollars ・ Déjà terminé (le code peut être référencé) ・ Https://www.kaggle.com/c/prudential-life-insurance-assessment
Zillow Prize: Zillow’s Home Value Prediction (Zestimate) ・ Pouvez-vous améliorer l'algorithme qui a changé le monde de l'immobilier? · Prédire l'erreur entre Zestimate et le prix de vente réel, en tenant compte de toutes les caractéristiques de votre maison ・ Prix de 1,2 million de dollars ・ Se termine après 4 mois ・ Https://www.kaggle.com/c/zillow-prize-1
Recommended Posts