0% ont trouvé ce document utile (0 vote)
64 vues4 pages

Code

Le document présente un code Python pour analyser un dataset de maisons et le dataset MNIST. Il inclut des étapes de visualisation, de régression linéaire, de classification K-NN, et d'évaluation des performances des modèles. Enfin, il propose des améliorations pour optimiser le modèle de prédiction.

Transféré par

9qgjwycs7c
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
64 vues4 pages

Code

Le document présente un code Python pour analyser un dataset de maisons et le dataset MNIST. Il inclut des étapes de visualisation, de régression linéaire, de classification K-NN, et d'évaluation des performances des modèles. Enfin, il propose des améliorations pour optimiser le modèle de prédiction.

Transféré par

9qgjwycs7c
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Code

# On importe les librairies dont on aura besoin pour ce tp


import numpy as np
import pandas as pd
import [Link] as plt

# On charge le dataset
house_data = pd.read_csv('[Link]')

# On affiche le nuage de points dont on dispose


[Link](house_data['surface'], house_data['loyer'], 'ro', markersize=4)
[Link]()

# On décompose le dataset et on le transforme en matrices pour pouvoir effectuer notre


calcul
X = [Link]([[Link](house_data.shape[0]), house_data['surface'].values]).T
y = [Link](house_data['loyer']).T

# On effectue le calcul exact du paramètre theta


theta = [Link]([Link](X)).dot(X.T).dot(y)

print(theta)

[Link]('Surface')
[Link]('Loyer')

[Link](house_data['surface'], house_data['loyer'], 'ro', markersize=4)

# On affiche la droite entre 0 et 250


[Link]([0,250], [[Link](0),[Link](0) + 250 * [Link](1)], linestyle='--',
c='#000000')

[Link]()

# Méthode avec scikit-learn : régression linéaire déjà implémentée


from sklearn import linear_model
regr = linear_model.LinearRegression()
[Link](X, y)
[Link](<des données de test>)
# Effectuer un sampling
sample = [Link](data_size, size=int(data_size*0.1) )
sampled_data = [Link][sample]

# Définition de la proportion du dataset


from sklearn.model_selection import train_test_split
xtrain, xtest, ytrain, ytest = train_test_split(X, y, train_size=0.8)

# Appel du dataset MNIST


from [Link] import fetch_openml
mnist = fetch_openml('mnist_784', version=1)

# Le dataset principal qui contient toutes les images


print ([Link])

# Le vecteur d'annotations associé au dataset (nombre entre 0 et 9)


print ([Link])

# Effectuer un sampling de 5000 données


import numpy as np

sample = [Link](70000, size=5000)


data = [Link][sample]
target = [Link][sample]

# Séparer le jeu de données en training set et testing set


from sklearn.model_selection import train_test_split
# Les images d'exemple "X" et les annotations cibles "y"
xtrain, xtest, ytrain, ytest = train_test_split(data, target, train_size=0.8)

# Créer un premier classifieur 3-NN


from sklearn import neighbors

knn = [Link](n_neighbors=3)
[Link](xtrain, ytrain)

# Tester l’erreur de notre classifieur


error = 1 - [Link](xtest, ytest)
print('Erreur: %f' % error)

# Tester le modèle pour tous les k de 2 à 15, mesurer l’erreur test et afficher la performance
en fonction de k pour trouver le k optimal
errors = []
for k in range(2,15):
knn = [Link](k)
[Link](100*(1 - [Link](xtrain, ytrain).score(xtest, ytest)))
[Link](range(2,15), errors, 'o-')
[Link]()

# On récupère le classifieur le plus performant


knn = [Link](4)
[Link](xtrain, ytrain)

# On récupère les prédictions sur les données test


predicted = [Link](xtest)

# On redimensionne les données sous forme d'images


images = [Link]((-1, 28, 28))

# On sélectionne un echantillon de 12 images au hasard


select = [Link]([Link][0], size=12)

# On affiche les images avec la prédiction associée


fig,ax = [Link](3,4)

for index, value in enumerate(select):


[Link](3,4,index+1)
[Link]('off')
[Link](images[value],cmap=[Link].gray_r,interpolation="nearest")
[Link]('Predicted: {}'.format( predicted[value]) )

[Link]()

# On récupère les données mal prédites


misclass = (ytest != predicted)
misclass_images = images[misclass,:,:]
misclass_predicted = predicted[misclass]

# On sélectionne un échantillon de ces images


select = [Link](misclass_images.shape[0], size=12)

# On affiche les images et les prédictions (erronées) associées à ces images


for index, value in enumerate(select):
[Link](3,4,index+1)
[Link]('off')
[Link](misclass_images[value],cmap=[Link].gray_r,interpolation="nearest")
[Link]('Predicted: {}'.format(misclass_predicted[value]) )

[Link]()

• une séparation en training / testing set ;


• deux propositions d'amélioration du modèle qui obtiennent de meilleures
performances que la "baseline" (la régression linéaire avec une
seule feature) ;
• une sélection d'un modèle final à partir des performances.

Vous aimerez peut-être aussi