Comment créer un modèle d'apprentissage supervisé par régression logistique

Après vous construisez votre premier modèle prédictif de classification pour l'analyse des données, la création de plus de modèles comme il est une tâche très simples en scikit

Sommaire

. La seule vraie différence d'un modèle à l'autre est que vous pouvez avoir à régler les paramètres d'un algorithme à.

Comment charger vos données

Cette liste de code va charger le iris ensemble de données dans votre session:

>>> From sklearn.datasets importer load_iris >>> iris = load_iris ()

Comment créer une instance du classificateur

Les deux lignes de code suivantes créent une instance de classificateur. La première ligne importe la bibliothèque de régression logistique. La deuxième ligne crée une instance de l'algorithme de régression logistique.

>>> De sklearn importation linear_model >>> logClassifier linear_model.LogisticRegression = (C = 1, random_state = 111)

Notez le paramètre (paramètre de régularisation) dans le constructeur. La paramètre de régularisation est utilisé pour prévenir surajustement. Le paramètre est pas strictement nécessaire (le constructeur ne fonctionne bien sans elle, car il sera par défaut à C = 1). Création d'un classificateur de régression logistique utilisant C = 150 crée une meilleure parcelle de la surface de la décision. Vous pouvez voir les deux parcelles ci-dessous.

Comment faire pour exécuter les données de formation




Vous aurez besoin de partager l'ensemble de données en apprentissage et de test avant que vous pouvez créer une instance du classificateur de régression logistique. Le code suivant accomplir cette tâche:

>>> From sklearn importation cross_validation >>> X_train, X_test, y_train, y_test = cross_validation.train_test_split (iris.data, iris.target, test_size = 0,10, random_state = 111) >>> logClassifier.fit (X_train, y_train)
Ligne 1 importe la bibliothèque qui vous permet de diviser l'ensemble de données en deux parties.
Ligne 2 appelle la fonction de la bibliothèque qui divise l'ensemble de données en deux parties et affecte les ensembles de données désormais divisées à deux paires de variables.
Ligne 3 prend l'exemple du classificateur de régression logistique vous venez de créer et appelle la s'adapter méthode pour former le modèle avec l'ensemble de données de formation.

Comment visualiser le classificateur

En regardant la surface de décision sur le terrain, il semble que quelques réglages doit être fait. Si vous regardez vers le milieu de la parcelle, vous pouvez voir que la plupart des points de données appartenant à la zone médiane (versicolor) sont couchés dans la région sur le côté droit (Virginica).

image0.jpg

Cette image montre la surface de décision avec une valeur de C de 150. Il semble visuellement mieux, afin de choisir d'utiliser ce paramètre pour votre modèle de régression logistique semble approprié.

image1.jpg

Comment faire pour exécuter les données de test

Dans le code suivant, la première ligne alimente l'ensemble de données de test pour le modèle et la troisième ligne affiche la sortie:

>>> LogClassifier.predict prédite = (X_test) >>> predictedarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2])

Comment évaluer le modèle

Vous pouvez traverser-de référencer la sortie de la prédiction contre le y_test tableau. En conséquence, vous pouvez voir qu'il prédit correctement tous les points de données de test. Voici le code:

>>> De métriques d'importation sklearn >>> predictedarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2]) >>> y_testarray ([ 0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2]) >>> metrics.accuracy_score (y_test, prévue) 1,0 1,0 # 100 pour cent de précision est> >> prédit == y_testarray ([Vrai, vrai, vrai, vrai, vrai, vrai, vrai, vrai, vrai, vrai, vrai, vrai, vrai, vrai, vrai], dtype = bool)

Alors, comment le modèle de régression logistique avec le paramètre C = 150 comparer à cela? Eh bien, vous ne pouvez pas battre de 100 pour cent. Voici le code pour créer et évaluer le classificateur logistique avec C = 150:

>>> LogClassifier_2 = linear_model.LogisticRegression (C = 150, random_state = 111) >>> logClassifier_2.fit (X_train, y_train) >>> prédit = logClassifier_2.predict (X_test) >>> metrics.accuracy_score (y_test, prédit) 0,93333333333333335 >>> metrics.confusion_matrix (y_test, prédit) Array ([[5, 0, 0], [0, 2, 0], [0, 1, 7]])

Nous nous attendions à mieux, mais il était en fait pire. Il y avait une erreur dans les prédictions. Le résultat est le même que celui du modèle Support Vector Machine (SVM).

Voici la liste complète du code pour créer et évaluer un modèle de classification de régression logistique avec les paramètres par défaut:

>>> From sklearn.datasets importer load_iris >>> from sklearn importation linear_model >>> from sklearn importation cross_validation >>> de mesures d'importation sklearn >>> iris = load_iris () >>> X_train, X_test, y_train, y_test = cross_validation .train_test_split (iris.data, iris.target, test_size = 0,10, random_state = 111) >>> logClassifier = linear_model.LogisticRegression (, random_state = 111) >>> logClassifier.fit (X_train, y_train) >>> prédit = logClassifier .predict (X_test) >>> predictedarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2]) >>> y_testarray ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2]) >>> metrics.accuracy_score (y_test, prédit) 1,0 1,0 # 100 pour cent de précision est >>> prédit == y_testarray ([Vrai, vrai, vrai, vrai, vrai, vrai, vrai, vrai, vrai, vrai, vrai, vrai, vrai, vrai, vrai], dtype = bool)

» » » » Comment créer un modèle d'apprentissage supervisé par régression logistique