Spaces:
Running
Running
| import os | |
| import pandas as pd | |
| import joblib | |
| from sklearn.model_selection import train_test_split | |
| from sklearn.feature_extraction.text import TfidfVectorizer | |
| from sklearn.linear_model import LogisticRegression | |
| from sklearn.metrics import classification_report, accuracy_score | |
| def main(): | |
| print("Chargement des données...") | |
| data_path = 'data/dataset_clean.csv' | |
| if not os.path.exists(data_path): | |
| print(f"Erreur : Le fichier {data_path} est introuvable. Veuillez d'abord exécuter data_preparation.py.") | |
| return | |
| df = pd.read_csv(data_path) | |
| # Vérification que les colonnes 'text' et 'label' existent | |
| if 'text' not in df.columns or 'label' not in df.columns: | |
| print("Erreur : Le dataset ne contient pas les colonnes 'text' et 'label' requises.") | |
| return | |
| # Gestion des valeurs nulles éventuelles | |
| df = df.dropna(subset=['text', 'label']) | |
| X = df['text'] | |
| y = df['label'] | |
| print("Séparation des données (80% Train, 20% Test)...") | |
| X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) | |
| print("Vectorisation du texte avec TfidfVectorizer (max_features=5000)...") | |
| vectorizer = TfidfVectorizer(max_features=5000) | |
| X_train_vec = vectorizer.fit_transform(X_train) | |
| X_test_vec = vectorizer.transform(X_test) | |
| print("Entraînement du modèle Logistic Regression de référence...") | |
| model = LogisticRegression(random_state=42, max_iter=1000) | |
| model.fit(X_train_vec, y_train) | |
| print("Évaluation du modèle sur le jeu de test...") | |
| y_pred = model.predict(X_test_vec) | |
| acc = accuracy_score(y_test, y_pred) | |
| report = classification_report(y_test, y_pred, target_names=["Humain (0)", "IA (1)"]) | |
| print("\n" + "="*40) | |
| print("RÉSULTATS DE L'ÉVALUATION") | |
| print("="*40) | |
| print(f"Accuracy Score: {acc:.4f}\n") | |
| print("Classification Report:") | |
| print(report) | |
| print("="*40 + "\n") | |
| print("Sauvegarde du modèle et du vectoriseur...") | |
| os.makedirs('models', exist_ok=True) | |
| model_path = 'models/baseline_logreg_model.joblib' | |
| vectorizer_path = 'models/tfidf_vectorizer.joblib' | |
| joblib.dump(model, model_path) | |
| joblib.dump(vectorizer, vectorizer_path) | |
| print(f"Modèle sauvegardé dans : {model_path}") | |
| print(f"Vectoriseur sauvegardé dans : {vectorizer_path}") | |
| print("Terminé avec succès !") | |
| if __name__ == "__main__": | |
| main() | |