Advertisement
rodolpheg

Untitled

Nov 17th, 2020
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.96 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """GMQ710_ANN.ipynb
  3.  
  4. Automatically generated by Colaboratory.
  5.  
  6. Original file is located at
  7. https://colab.research.google.com/drive/13jNdJ0bU1V7Jk16Pr8yNAoA_Gad_3qwa
  8.  
  9. # 1) Importation des données
  10.  
  11. Importation de deux bibliothèques nécessaires à l'importation, la manipulation et l'affichage des données
  12. """
  13.  
  14. import pandas as pd
  15. import seaborn as sns
  16.  
  17. """Importation du fichier CSV"""
  18.  
  19. df = pd.read_csv('weatherHistory.csv')
  20.  
  21. """On conserve seulement les 2000 premières lignes…"""
  22.  
  23. df = df.head(2000)
  24.  
  25. """Affichage des premières lignes du DataFrame"""
  26.  
  27. df.head()
  28.  
  29. """Pour cet exercice, on ne garde que quelques variables"""
  30.  
  31. df = df[['Humidity','Temperature (C)','Wind Speed (km/h)']]
  32.  
  33. """On visualise les relations entre les variables"""
  34.  
  35. sns.pairplot(df)
  36.  
  37. """Préparation des listes X et y"""
  38.  
  39. X = df[['Humidity','Wind Speed (km/h)']].values
  40.  
  41. y = df['Temperature (C)'].values
  42.  
  43. """# 2) Séparation des données d’entrainement et des données de test"""
  44.  
  45. from sklearn.model_selection import train_test_split
  46.  
  47. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
  48.  
  49. """Étape facultative (mais souvent utile) : normaliser les données"""
  50.  
  51. from sklearn.preprocessing import MinMaxScaler
  52. scaler = MinMaxScaler()
  53. scaler.fit(X_train)
  54. X_train = scaler.transform(X_train)
  55. scaler.fit(X_test)
  56. X_test = scaler.transform(X_test)
  57.  
  58. from tensorflow.keras.models import Sequential
  59. from tensorflow.keras.layers import Dense
  60.  
  61. """# 3) Construction de l’architecture du réseau de neurones
  62.  
  63. Création d'un modèle vide de type séquentiel
  64. """
  65.  
  66. model = Sequential()
  67.  
  68. """Création des couches et de leurs fonctions d'activation : https://towardsdatascience.com/deep-learning-which-loss-and-activation-functions-should-i-use-ac02f1c56aa8, https://riptutorial.com/fr/machine-learning/example/31624/fonctions-d-activation"""
  69.  
  70. model.add(Dense(4,activation='relu'))
  71. model.add(Dense(4,activation='relu'))
  72. model.add(Dense(4,activation='relu'))
  73.  
  74. """Création du neurone "résultat". On a besoin d'un seul résultat (température), on ne lui donne donc qu'un neurone"""
  75.  
  76. model.add(Dense(1))
  77.  
  78. """On compile le réseau avec un optimiseur et une méthode de"""
  79.  
  80. model.compile(optimizer='RMSprop', loss='mse')
  81.  
  82. """# 4. Optimisation du réseau (calcul des poids et des biais)"""
  83.  
  84. model.fit(X_train,y_train,epochs=250, verbose=1)
  85.  
  86. """Affichage de l'historique de l'optimisation"""
  87.  
  88. loss_df = pd.DataFrame(model.history.history)
  89.  
  90. loss_df.plot()
  91.  
  92. """# 5. Évaluation de la qualité du modèle"""
  93.  
  94. model.evaluate(X_test,y_test,verbose=1)
  95.  
  96. """Prédiction des températures avec les données de test (et non les données d'entrainement)"""
  97.  
  98. test_predictions = model.predict(X_test)
  99.  
  100. test_predictions = pd.Series(test_predictions.reshape(len(X_test,)))
  101. pred_df = pd.DataFrame(y_test,columns=['Test y'])
  102. pred_df = pd.concat([pred_df,test_predictions],axis=1)
  103. pred_df.columns = ['Test y','Model predictions']
  104.  
  105. """Graphique des données observées (Test y) V. les données prédites par le modèle :"""
  106.  
  107. sns.scatterplot(x='Test y',y='Model predictions',data=pred_df)
  108.  
  109. """Importation de la fonction Sklearn pour calculer les erreurs"""
  110.  
  111. from sklearn.metrics import mean_absolute_error, mean_squared_error
  112.  
  113. """Nous voici avec une erreur moyenne absolue de :"""
  114.  
  115. mean_absolute_error(pred_df['Test y'],pred_df['Model predictions'])
  116.  
  117. """À comparer avec la moyenne des températures (pour se faire une idée d ela qualité du modèle)"""
  118.  
  119. df['Temperature (C)'].mean()
  120.  
  121. """Le modèle n'est donc pas TRÈS bon, mais on a appris des choses... :)
  122.  
  123. Pour utiliser le modèle avec de nouvelles données (sous la forme [['Humidity','Wind Speed (km/h)']]) :
  124. """
  125.  
  126. model.predict([[40,.5]])
  127.  
  128. """Pour sauvegarder notre modèle :"""
  129.  
  130. model.save('mon_modèle.h5')
  131.  
  132. """Pour charger un modèle existant :"""
  133.  
  134. from tensorflow.keras.models import load_model
  135. loaded_model = load_model('mon_modèle.h5')
  136.  
  137. loaded_model.predict([[40,.5]])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement