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'.")