Académique Documents
Professionnel Documents
Culture Documents
16 février 2024
TD - TP1 Exercice I RNA
150
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 2]
1
[8]: #Question 6 : Division des données en données d'entrainement et données de test
t = 0.5
X_train, X_test, Y_train, Y_test = train_test_split(X,y,test_size=t)
print("Train set : ", X_train.shape)
print("Test set : ", X_test.shape)
t = 0.2
X_train, X_test, Y_train, Y_test = train_test_split(X,y,test_size=t)
print("Train set : ", X_train.shape)
print("Test set : ", X_test.shape)
2
[11]: #Question 6 - C : il permet de déterminer le taux de découpage des données␣
↪d'entrainement et des données de test
[14]: #Question 7-B Les figures obtenus représentent les différents pourcentages de␣
↪données d'entrainement et de données de test
t = 0.2
X_train, X_test, Y_train, Y_test =␣
↪train_test_split(X,y,test_size=t,random_state=5)
plt.figure(figsize=(12,4))
plt.subplot(121)
plt.scatter(X_train[:,0], X_train[:,1], c=Y_train, alpha=0.8)
plt.title("Train Set")
plt.subplot(122)
plt.scatter(X_test[:,0], X_test[:,1], c=Y_test, alpha=0.8)
plt.title("Test Set")
3
[15]: Text(0.5, 1.0, 'Test Set')
[16]: #Question 8 : Après avoir relancer plusieurs fois nous avons constaté une mise␣
↪en place aléatoire des données de test
4
TD - TP1 Exercice II RNA
[3]: t = 0.2
X_train, X_test, Y_train, Y_test = train_test_split(X,y,test_size=t)
print("Train set : ", X_train.shape)
print("Test set : ", X_test.shape)
[5]: KNeighborsClassifier(n_neighbors=1)
[8]: 1.0
[9]: #Nous pouvons dire que 100% des données d'entrainement ont été bien utilisé
[10]: 0.93
1
TD - TP1 Exercice III RNA
[3]: t = 0.2
X_train, X_test, Y_train, Y_test = train_test_split(X,y,test_size=t)
print("Train set : ", X_train.shape)
print("Test set : ", X_test.shape)
[5]: KNeighborsClassifier(n_neighbors=1)
1
[7]: KNeighborsClassifier(n_neighbors=3)
[9]: KNeighborsClassifier(n_neighbors=4)
[12]: #Question 2 : Evaluation finale en conclusion pour k=4 nous obtenons le␣
↪meilleur score
print(compare_score)
Model Score
0 Model(k=1) 0.92
1 Model(k=3) 0.92
2 Model(k=4) 0.93
t = 0.4
X_train, X_test, Y_train, Y_test = train_test_split(X,y,test_size=t)
print("Train set : ", X_train.shape)
print("Test set : ", X_test.shape)
2
[16]: #paramètre du modèle 3
model3.fit(X_train, Y_train)
score2 = round(model3.score(X_test, Y_test), 2)
Model Score
0 Model(k=1) 0.91
1 Model(k=3) 0.92
2 Model(k=4) 0.92
[21]: #Question 4 - B :
cross_val_score(KNeighborsClassifier(), X_train, Y_train, cv = 5, scoring =␣
↪'accuracy')
val_score.append(score)
print(val_score)
3
0.9003410059676045, 0.9003410059676045, 0.9003410059676045, 0.9003410059676045,
0.9032821824381927, 0.8973998294970162, 0.8973998294970162, 0.8973998294970162,
0.8973998294970162, 0.9003410059676045, 0.9032821824381927, 0.9003410059676045,
0.9003410059676045]
[23]: Text(0, 0.5, 'Les valeurs des différentes moyennes des scores')
[34]: #Le modèle obtenu est le modèle k = 7 et k = 8 nous avons les mêmes valeurs
#car ils ont obtenu score = 0.9384057971014494
4
[26]: #Affichons la dimension de train_score
print(train_score.shape)
(49, 5)
(49, 5)
[28]: #Question F : visualisons les différents scores moyens en fonction du nombre de␣
↪voisin
plt.grid(True)
plt.plot(k, val_score.mean(axis=1), label='validation', marker='+')
plt.ylabel('score')
plt.xlabel('n_neighbors')
plt.grid(True)
5
plt.plot(k, train_score.mean(axis=1), color="r", label='validation', marker='+')
plt.ylabel('train')
plt.xlabel('n_neighbors')
[30]: #Nous remarquons que plus le nombre de voisins augmentent le score des données␣
↪entrainés diminue au fur et à mesure
6
[32]: Text(0.5, 0, 'n_neighbors')
[33]: #Nous remarquons que plus le nombre de voisins augmentent le score des données␣
↪de test diminue au fur et à mesure
7
TD - TP1 Exercice IV RNA
1
[7]: #Question III : Entrainons le modèle avec les différentes combinaisons
Grid.fit(X_train, Y_train)
[9]: 0.9494505494505494
[11]: 0.92
# True Negatif = 7 des cas sont testés non-malades sont prédits malades
# False Positif = 2 des cas sont testés malades sont prédits non malades
# False Negatif = 70 des cas sont testés malades sont effectivement prédits␣
↪malades
2
TD - TP1 Exercice V RNA
print(N)
1
[12]: #Question 2 : Visualisons la courbe des scores moyens
plt.grid(True)
plt.plot(N, val_score.mean(axis=1), color = "r", marker = "+",␣
↪label="validation")
plt.ylabel('Score')
plt.xlabel('Train Sizes')
plt.legend()
plt.show()
2
[24]: #Nous pouvons dire qu'il n'est plus nécessaire de collecter les données car à␣
↪partir de 300 les scores semblent se stabiliser