TP Sklearn

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 4

Ministère de l’Enseignement Supérieur, de la Recherche Scientifique

et des Technologies de l'Information et de la Communication

Université de Carthage

Faculté des Sciences Département


de Bizerte Informatique

Classe : MPDS1 / MSI1 Durée : 3 heures


Matière : MACHINE LEARNING Enseignant : R. Mahouachi

TP5 : Machine learning avec Scikit-learn


1. Régression linéaire

Travail à faire :

1. Copiez le code suivant :

2. Visualisez les données, sont-elles linéaires ?

3. Entrainez sur ces données un modèle de régression linéaire.

https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html

4. Visualisez la droite de régression :

5. Evaluez le modèle de régression obtenu :

from sklearn.metrics import mean_squared_error, r2_score

model.coef_ : affiche les coefficients de la régression (θ1,.., θn)

model. intercept_ : affiche θ0

mean_squared_error(y, model.predict(X))

r2_score(y, predictions)
2. KNN

Travail à faire :

1. Importez le dataset iris de l’url suivant :


https://gist.githubusercontent.com/netj/8836201/raw/6f9306ad21398ea43cba4f7d537619d0e07
d5ae3/iris.csv

2. Visualisez-le dataset. Combien de variables contient-il ? Utilisez ce code pour visualiser les
relations entre les variables :

import matplotlib.pyplot as plt

import seaborn as sns

sns.pairplot(df) #avec df est le dataframe

plt.show()

3. Modifiez le code en ajoutant les paramètres suivants :

sns.pairplot(df, hue="variety", palette="husl", markers=["o", "s", "D"])

4. Séparez les données en X et y

5. Divisez les données en données d’apprentissage et de test (80% pour apprentissage et 20%
pour entrainement) en utilisant le code suivant :

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=5)

6. Entrainez sur les données d’apprentissage un modèle de KNN :

7. Calculez le score obtenu par le modèle entrainé sur les données de test

8. Affichez la matrice de confusion :

from sklearn.metrics import confusion_matrix

print(confusion_matrix(y_test, model.predict(X_test)))

Pour visualiser cette matrice, utilisez le code suivant :

from sklearn.metrics import plot_confusion_matrix


plot_confusion_matrix(model, X_test, y_test)

plt.show()

9. Utilisez la validation croisée (5-fold-cross-validation):

from sklearn.model_selection import cross_val_score

cross_val_score(KNeighborsClassifier(n_neighbors = 1), X_train, y_train, cv=5,


scoring="accuracy").mean()

10. Changez le nombre de voisins par : 3, 5 et enfin 9 et calculez le score d’accuracy à chaque fois.
Que remarquez-vous ?

11. Ecrire une boucle qui permet d’afficher le score (accuracy) pour k allant de 1 à 10.

12. Utilisez la GridSearch pour chercher les meilleurs hyperparamètres de KNN :

from sklearn.model_selection import GridSearchCV

params = {

'n_neighbors': [3, 5, 7, 9, 11],

'metric' : ['euclidean', 'manhattan']

grid = GridSearchCV(estimator=KNeighborsClassifier(),param_grid=params, cv=5)

grid.fit(X_train, y_train)

print(grid.best_score_)

print(grid.best_params_)

13. Affichez le rapport de classification en utilisant ce code :

from sklearn.metrics import classification_report

print(classification_report(y_test, grid.predict(X_test)))

3. Arbres de décision

Travail à faire :

1. Chargez et visualisez les données « music.csv »

2. En utilisant le code suivant, y-a-t-il des données manquantes ?

import pandas_profiling as pp

pp.ProfileReport(df)
3. Vérifiez s’il y a des valeurs NaN avec le code suivant : df.isnull().values.any()

4. Préparez les données : X va contenir les valeurs des colonnes age et gender et Y la colonne
genre

5. Entrainez un modèle d’arbre de décision sur les données

6. Effectuez des prédictions pour deux individus ayant respectivement comme age et gender (21,
1) et (22,0)

7. Divisez les données en données d’apprentissage et de test (80% pour apprentissage et 20%
pour entrainement)

8. Evaluez le modèle en calculant son accuracy

from sklearn.metrics import accuracy_score

score = accuracy_score(y_test, predictions)

9. Visualisez l’arbre de décision :

FEATURE_NAMES = ['age', 'gender']


from sklearn.tree import export_graphviz
export_graphviz(model, 'tree.dot', feature_names = FEATURE_NAMES,
class_names = sorted(y.unique()), label = ‘all’)

Vous aimerez peut-être aussi