diff --git a/preprocess/remplissageoff.ipynb b/preprocess/remplissageoff.ipynb index 7ad204662ca5faf48bb73918d4aca9ed06eb6e7a..2dfea6103b1ebbcd318d4cd78001fa01660aafc3 100644 --- a/preprocess/remplissageoff.ipynb +++ b/preprocess/remplissageoff.ipynb @@ -1,22 +1,50 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "vscode": { - "languageId": "plaintext" - } - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "language_info": { - "name": "python" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} +import pandas as pd +import numpy as np +from sklearn.model_selection import train_test_split, cross_val_score +from sklearn.ensemble import RandomForestRegressor +from sklearn.metrics import mean_squared_error + +data = pd.read_csv("data_avec_gene.csv") +print(data.head()) + +# Prédit la variable "off" sans utiliser la donnée "on" +# data_known : lignes pour lesquelles "off" est renseigné +# data_missing : lignes pour lesquelles "off" est manquant +data_known = data[data["off"].notnull()].copy() +data_missing = data[data["off"].isnull()].copy() + + +features = data.columns.drop(["on", "off"]) +print("Variables explicatives utilisées :", features.tolist()) + +# Préparation des ensembles d'entraînement +X = data_known[features] +y = data_known["off"] + +# Division en ensemble d'entraînement et de test +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) + +#J'utilise un RandomForestRegressor, choix à discuter +model = RandomForestRegressor(n_estimators=100, random_state=42) +model.fit(X_train, y_train) + +# On test un peu le model +y_pred = model.predict(X_test) +mse = mean_squared_error(y_test, y_pred) +print(f"Mean Squared Error sur l'ensemble de test : {mse:.3f}") + +# Validation croisée +cv_scores = cross_val_score(model, X, y, cv=5, scoring='neg_mean_squared_error') +print("CV MSE scores :", -cv_scores) +print("CV MSE moyen :", -cv_scores.mean()) + +# Prédiction des valeurs manquantes de "off" +if not data_missing.empty: + X_missing = data_missing[features] + data.loc[data_missing.index, "off_pred"] = model.predict(X_missing) + print("Prédictions effectuées pour les données manquantes.") + +# Enregistrement du jeu de données avec les prédictions dans un nouveau fichier CSV +data.to_csv("data_with_predictions.csv", index=False) +print("Les données avec les prédictions ont été enregistrées dans 'data_with_predictions.csv'.") +