Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- """GMQ710_ANN.ipynb
- Automatically generated by Colaboratory.
- Original file is located at
- https://colab.research.google.com/drive/13jNdJ0bU1V7Jk16Pr8yNAoA_Gad_3qwa
- # 1) Importation des données
- Importation de deux bibliothèques nécessaires à l'importation, la manipulation et l'affichage des données
- """
- import pandas as pd
- import seaborn as sns
- """Importation du fichier CSV"""
- df = pd.read_csv('weatherHistory.csv')
- """On conserve seulement les 2000 premières lignes…"""
- df = df.head(2000)
- """Affichage des premières lignes du DataFrame"""
- df.head()
- """Pour cet exercice, on ne garde que quelques variables"""
- df = df[['Humidity','Temperature (C)','Wind Speed (km/h)']]
- """On visualise les relations entre les variables"""
- sns.pairplot(df)
- """Préparation des listes X et y"""
- X = df[['Humidity','Wind Speed (km/h)']].values
- y = df['Temperature (C)'].values
- """# 2) Séparation des données d’entrainement et des données de test"""
- from sklearn.model_selection import train_test_split
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
- """Étape facultative (mais souvent utile) : normaliser les données"""
- from sklearn.preprocessing import MinMaxScaler
- scaler = MinMaxScaler()
- scaler.fit(X_train)
- X_train = scaler.transform(X_train)
- scaler.fit(X_test)
- X_test = scaler.transform(X_test)
- from tensorflow.keras.models import Sequential
- from tensorflow.keras.layers import Dense
- """# 3) Construction de l’architecture du réseau de neurones
- Création d'un modèle vide de type séquentiel
- """
- model = Sequential()
- """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"""
- model.add(Dense(4,activation='relu'))
- model.add(Dense(4,activation='relu'))
- model.add(Dense(4,activation='relu'))
- """Création du neurone "résultat". On a besoin d'un seul résultat (température), on ne lui donne donc qu'un neurone"""
- model.add(Dense(1))
- """On compile le réseau avec un optimiseur et une méthode de"""
- model.compile(optimizer='RMSprop', loss='mse')
- """# 4. Optimisation du réseau (calcul des poids et des biais)"""
- model.fit(X_train,y_train,epochs=250, verbose=1)
- """Affichage de l'historique de l'optimisation"""
- loss_df = pd.DataFrame(model.history.history)
- loss_df.plot()
- """# 5. Évaluation de la qualité du modèle"""
- model.evaluate(X_test,y_test,verbose=1)
- """Prédiction des températures avec les données de test (et non les données d'entrainement)"""
- test_predictions = model.predict(X_test)
- test_predictions = pd.Series(test_predictions.reshape(len(X_test,)))
- pred_df = pd.DataFrame(y_test,columns=['Test y'])
- pred_df = pd.concat([pred_df,test_predictions],axis=1)
- pred_df.columns = ['Test y','Model predictions']
- """Graphique des données observées (Test y) V. les données prédites par le modèle :"""
- sns.scatterplot(x='Test y',y='Model predictions',data=pred_df)
- """Importation de la fonction Sklearn pour calculer les erreurs"""
- from sklearn.metrics import mean_absolute_error, mean_squared_error
- """Nous voici avec une erreur moyenne absolue de :"""
- mean_absolute_error(pred_df['Test y'],pred_df['Model predictions'])
- """À comparer avec la moyenne des températures (pour se faire une idée d ela qualité du modèle)"""
- df['Temperature (C)'].mean()
- """Le modèle n'est donc pas TRÈS bon, mais on a appris des choses... :)
- Pour utiliser le modèle avec de nouvelles données (sous la forme [['Humidity','Wind Speed (km/h)']]) :
- """
- model.predict([[40,.5]])
- """Pour sauvegarder notre modèle :"""
- model.save('mon_modèle.h5')
- """Pour charger un modèle existant :"""
- from tensorflow.keras.models import load_model
- loaded_model = load_model('mon_modèle.h5')
- loaded_model.predict([[40,.5]])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement