Apprenez à exploiter Google Bard pour la planification de projet, le prétraitement des données, l’analyse exploratoire, l’ingénierie des features, la sélection de modèle, l’optimisation des hyperparamètres, la validation du modèle, ainsi que la création et le déploiement d’une application web.
La dernière version de Bard, propulsée par le modèle PaLM 2, améliore les performances en raisonnement, en code et en multilingue. Contrairement à ChatGPT, vous devez adapter vos consignes à Bard pour obtenir des réponses de haute qualité.
\n
Cet article explique comment tirer parti du nouveau Bard pour construire un projet de data science de bout en bout. Vous apprendrez à formuler des prompts efficaces pour générer des idées et du code pour l’expérimentation et le développement.
La phase de planification est essentielle dans tout projet, car elle en conditionne la réussite. Durant cette étape, nous analysons les ressources et objectifs disponibles et élaborons un plan décrivant les étapes à suivre pour atteindre nos buts.
\n
Pour créer une trame de projet, nous allons formuler un prompt détaillé pour Bard incluant toutes les informations pertinentes pour développer notre application de détection des fake news. Il intégrera des détails clés, comme le jeu de données que nous utiliserons — le dataset Fake News Classification issu de l’article WELFake — ainsi que des directives qui guideront l’équipe tout au long du développement.
\n
Prompt : \«\ Agissez en tant que Data Science Manager et définissez un plan pour un projet de détection des fake news de bout en bout. Nous disposons déjà du dataset FakeNewsDetection comprenant 72 134 lignes et 4 colonnes : [Unnamed: 0, title, text, et label (0 = fake, 1 = real)].\ \»
\n
\n
Bien que la trame générique pose de bonnes bases, quelques étapes clés manquent. Nous pouvons les ajouter via un prompt de suivi.
\n
Prompt de suivi : \«\ Ajoutez des étapes comme l’EDA, la sélection de modèle, l’optimisation des hyperparamètres, une webapp Streamlit et un déploiement sur Streamlit Cloud. Proposez un plan de projet consolidé.\ \»
\n
\n
Il semble que Bard n’ait pas compris que nous avons déjà un jeu de données et que la collecte n’est pas nécessaire. Vous pouvez écrire un prompt de suivi pour affiner la proposition.
\n
Prompt de suivi : \«\ Nous disposons déjà des données, supprimez l’étape de collecte dans le plan de projet.\ \»
\n
Voici la trame du projet de détection des fake news :
\n\n
Prétraitement des données
\n
Analyse exploratoire des données (EDA)
\n
Extraction de features
\n
Sélection de modèle
\n
Optimisation des hyperparamètres
\n
Entraînement et évaluation du modèle
\n
Webapp Streamlit
\n
Déploiement sur Streamlit Cloud
\n\n
Le plan de projet inclut une explication détaillée de chaque étape pour construire notre application de détection des fake news, ainsi que des méthodes recommandées pour optimiser les résultats. Il propose également un agenda hebdomadaire précisant tâches clés et jalons.
\n
Si la rédaction de prompts vous pose problème ou vous paraît fastidieuse, pas d’inquiétude. Téléchargez notre antisèche de prompt engineering, qui donne accès à plus de 60 prompts conçus par des experts pour différents travaux de data science.
\n
Bard pour le prétraitement des données
\n
À cette étape, nous allons charger, nettoyer et réaliser de l’ingénierie des features sur le dataset.
\n
Chargement des données
\n
Changez maintenant de personnage : passez de Data Manager à Data Scientist pour rédiger un prompt de chargement des données.
\n
Prompt : \«\ Agissez en Data Scientist confirmé et écrivez du code Python pour charger cinq mille échantillons aléatoires depuis le dataset du projet ci‑dessus.\ \»
\n
Remarque : nous réduisons l’échantillon pour entraîner et optimiser les modèles plus rapidement.
\n
\n
import pandas as pd\n\n# Load the dataset\ndf = pd.read_csv(\"fake-news-classification/WELFake_Dataset.csv\")\n\n# Get 5 thousand random samples\ndf = df.sample(n=5000, random_state=42)\n\n# Print the first 5 rows of the data\ndf.head()Propulsé par
\n
\n
Nettoyage des données
\n
Pour garantir un dataset propre et prêt pour l’analyse, nous allons donner à Bard des instructions précises sur les fonctions de nettoyage requises.
\n
Prompt : \«\ Écrivez une fonction Python pour nettoyer le dataset. La fonction doit supprimer les valeurs manquantes, retirer la colonne \"Unnamed: 0\", nettoyer le texte et enlever les stopwords.\ \»
\n
Pour corriger d’éventuels bogues ou erreurs, nous allons demander à Bard de résoudre l’erreur liée aux stopwords. Il comprendra le problème et proposera une version améliorée du code.
\n
Prompt mis à jour : \«\ Résolvez l’erreur avec les stopwords.\ \»
\n
import nltk\nnltk.download('stopwords')Propulsé par
\n
from nltk.corpus import stopwords\n\ndef clean_dataset(df):\n\n # Drop missing values\n df = df.dropna()\n \n # Drop Unnamed column\n df = df.drop([\"Unnamed: 0\"], axis=1)\n\n # Clean text\n df['text'] = df['text'].str.lower()\n df[\"Text\"] = df[\"Text\"].str.replace(\"[^a-zA-Z]\", \" \")\n\n # Remove stopwords\n stopword = set(stopwords.words('english'))\n df['text'] = df['text'].apply(lambda x: ' '.join([word for word in x.split() if word not in stopword]))\n\n return df\n\ndf = clean_dataset(df)\ndf.head()Propulsé par
\n
Nous avons désormais un dataset plutôt propre.
\n
\n
Ingénierie des features
\n
Pour que Bard génère un code optimal, mieux vaut donner des consignes précises plutôt que des questions vagues. Par exemple, si nous demandons à Bard d’exécuter une fonction spécifique, comme \«\ combiner la longueur des deux colonnes de texte\ \», il produira un code de meilleure qualité, adapté aux besoins du projet.
\n
Prompt : \«\ Écrivez maintenant une fonction Python pour effectuer de l’ingénierie des features. Mettez la colonne title en minuscules et combinez text et title, calculez la longueur du texte combiné, comptez les mots uniques, etc.\ \»
\n
deffeature_engineering(df):\n\n # Lower the title column\n df['title'] = df['title'].str.lower()\n\n # Combine text and title\n df['combined'] = df['title'] + ' ' + df['text']\n\n # Length of the combined text\n df['combined_length'] = df['combined'].str.len()\n\n # Count unique words\n df['unique_words'] = df['text'].apply(lambda x: len(set(x.split())))\n\n return df\n\n# Perform feature engineering\ndf = feature_engineering(df)\n\n# Print the first few rows of the DataFrame with the new features\ndf.head()Propulsé par
\n
Nous avons créé trois nouvelles features que nous utiliserons pour l’analyse.
\n
\n
Bard pour l’analyse exploratoire (EDA)
\n
Pour l’EDA, nous demanderons à Bard de créer certaines visualisations indispensables à l’exploration des données.
\n
Prompt : \«\ Écrivez du code Python pour réaliser l’EDA du projet ci‑dessus. Incluez un histogramme comparant la longueur du texte combiné fake vs real, la distribution des labels et un nuage de mots.\ \»
\n
Nous allons ajouter un prompt de suivi pour définir les bornes des classes.
\n
Prompt de suivi : \«\ Mettez à jour le code EDA avec `np.linspace` pour créer des intervalles de 0 à 200 avec 40 classes.\ \»
\n
import matplotlib.pyplot as plt\nimport seaborn as sns\nimport numpy as np\n\nbins = np.linspace(0,200,40)\n# Histogram of the length of fake vs real news articles\nplt.hist(df['combined_length'].where(df['label'] == 1),bins, alpha=0.5, label='Real')\nplt.hist(df['combined_length'].where(df['label'] == 0),bins, alpha=0.5, label='Fake')\nplt.xlabel('Combined Text Length')\nplt.ylabel('Number of Articles')\nplt.legend()\nplt.show()Propulsé par
\n
Il semble que les fake news aient une longueur de texte supérieure aux articles réels.
\n
\n
# Label distribution\nplt.pie(df['label'].value_counts(), labels=['Fake', 'Real'], autopct='%1.1f%%')\nplt.show()Propulsé par
\n
La distribution des labels est assez équilibrée ; il n’est pas nécessaire d’appliquer un rééquilibrage de classes.
\n
\n
from wordcloud import WordCloud\n\nwc = WordCloud(max_words=100, background_color='white')\nwc.generate(' '.join(df[df['label']==0]['combined']))\nplt.imshow(wc)\nplt.axis('off')\nplt.title('Word cloud of fake news articles')\nplt.show()Propulsé par
\n
\n
wc = WordCloud(max_words=100, background_color='white')\nwc.generate(' '.join(df[df['label']==1]['combined']))\nplt.imshow(wc)\nplt.axis('off')\nplt.title('Word cloud of real news articles')\nplt.show()Propulsé par
\n
\n
Les articles réels mettent davantage en avant des mots comme \«\ trump\ \» et \«\ said\ \» que les fake news.
\n
Extraction de features avec Bard
\n
Ici, nous allons écrire un prompt pour convertir la colonne \«\ text\ \» en vecteurs et scinder le dataset en ensembles d’entraînement et de test.
\n
Prompt : \«\ Convertissez la colonne text en vecteurs et découpez le dataset en jeux d’entraînement et de test.\ \»
\n
from sklearn.feature_extraction.text import TfidfVectorizer\nfrom sklearn.model_selection import train_test_split\n\n# Convert the text column into vectors\nvectorizer = TfidfVectorizer()\nX = vectorizer.fit_transform(df['text'])\n\n# Split the dataset into training and testing datasets\nX_train, X_test, y_train, y_test = train_test_split(X, df['label'], test_size=0.25)Propulsé par
\n
Bard pour la sélection de modèle
\n
Maintenant que le contexte est posé, vous pouvez poser des questions directes.
\n
Prompt : \«\ Procédez à la sélection de modèle.\ \»
\n
from sklearn.linear_model import LogisticRegression\nfrom sklearn.svm import SVC\nfrom sklearn.tree import DecisionTreeClassifier\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.metrics import accuracy_score\n\n# Train the models\nmodels = [LogisticRegression(), SVC(), DecisionTreeClassifier(), RandomForestClassifier()]\nfor model in models:\n model.fit(X_train, y_train)\n\n# Evaluate the models\npredictions = []\nfor model in models:\n predictions.append(model.predict(X_test))\n\n# Calculate the accuracy of the models\naccuracies = []\nfor predictions in predictions:\n accuracies.append(accuracy_score(y_test, predictions))\n\n# Print the accuracy of the models\nprint(\"Accuracy of LogisticRegression:\", accuracies[0])\nprint(\"Accuracy of SVC:\", accuracies[1])\nprint(\"Accuracy of DecisionTreeClassifier:\", accuracies[2])\nprint(\"Accuracy of RandomForestClassifier:\", accuracies[3])Propulsé par
\n
Accuracy of LogisticRegression:0.9024979854955681\nAccuracy of SVC:0.91941982272361\nAccuracy of DecisionTreeClassifier:0.8767123287671232\nAccuracy of RandomForestClassifier:0.8863819500402901\nPropulsé par
\n
D’après notre analyse, tous les modèles testés s’en sortent correctement. Toutefois, le Support Vector Classifier (SVC) obtient la meilleure précision parmi les modèles évalués.
\n
Réglage des hyperparamètres avec Bard
\n
Nous avons demandé à Bard d’écrire du code d’optimisation des hyperparamètres qui enregistre le meilleur modèle et l’objet vectorizer pour le déploiement.
\n
Prompt : \«\ Écrivez du code Python pour l’optimisation des hyperparamètres de SVC. Enregistrez aussi le meilleur modèle et le vectorizer avec Joblib.\ \»
\n
from sklearn.svm import SVC\nfrom sklearn.model_selection import GridSearchCV\nfrom sklearn.metrics import accuracy_score,f1_score, classification_report, confusion_matrix\n\nimport joblib\n\n# Create a RandomForestClassifier model\nsvm = SVC()\n\n# Create the hyperparameter grid\nparam_grid = {'C': [1, 10, 100], 'gamma': [0.01, 0.1, 1]}\n\n# Create the GridSearchCV object\ngrid = GridSearchCV(SVC(), param_grid, cv=5)\n\n\n# Fit the GridSearchCV object to the training data\ngrid.fit(X_train, y_train)\n\n# Print the best parameters\nprint(grid.best_params_)Propulsé par
# Predict the labels of the testing data using the best model\ny_pred = grid.predict(X_test)\n\n# Calculate the accuracy of the best model\naccuracy = accuracy_score(y_test, y_pred)\n\n# Print the accuracy of the best model\nprint(\"Accuracy of the best model:\", accuracy)Propulsé par
\n
La précision s’est légèrement améliorée.
\n
Accuracy of the best model:0.9298952457695407Propulsé par
\n
Le modèle et le vectorizer enregistrés seront utilisés pour l’inférence.
\n
# Save the best model\njoblib.dump(grid.best_estimator_, 'best_model.pkl')\n# Save the TfidfVectorizer\njoblib.dump(vectorizer, 'tfidf_vectorizer.pkl')Propulsé par
\n
Évaluation du modèle avec Bard
\n
La précision ne suffit pas pour un modèle de classification. Il faut aussi mesurer le f1‑score, le recall, la precision et la matrice de confusion.
\n
Prompt : \«\ Écrivez du code Python pour l’évaluation du modèle. Incluez un classification report, une confusion matrix et le f1 score.\ \»
\n
print(classification_report(y_test, y_pred))Propulsé par
\n
D’après le rapport, notre modèle est assez stable sur le jeu de test.
Une fois satisfaits des résultats, nous allons développer une application qui convertit le texte saisi en vecteur, le passe au modèle et affiche le résultat.
\n
Avant cela, nous devons créer un dépôt GitHub.
\n
\n
Clonez le dépôt et enregistrez tous les composants essentiels de l’application. Cette étape garantit leur conservation et facilite le versioning de l’app et du modèle.
\n
git clone https://github.com/kingabzpro/Fake-News-DataCamp-Project.gitPropulsé par
\n
Rédigez un prompt générique pour développer une app qui prédit si une news est réelle ou fausse.
\n
Prompt : \«\ Écrivez un fichier Python séparé pour créer une web app avec Streamlit afin de prédire si une news est (0 = fake, 1 = real). Incluez uniquement la partie app Streamlit.\ \»
\n
Créez ensuite un fichier app.py et collez-y le code généré par Bard. Une fois fait, lancez l’application avec la commande streamlit run app.py.
\n
Remarque : assurez-vous de disposer de tous les packages Python requis pour exécuter l’app Streamlit.
\n
On dirait que Bard n’a pas chargé le vectorizer. Nous pouvons écrire un prompt de suivi pour corriger cela.
\n
Prompt de suivi : \«\ Ajoutez le chargement du Vectorizer et du Model dans le fichier de l’app via joblib.\ \»
\n
L’app ne fonctionne pas correctement ; ajoutons un bouton d’exécution pour résoudre ce point.
\n
Prompt de suivi : \«\ Ajoutez aussi un bouton pour lancer l’inférence.\ \»
\n
import streamlit as st\nimport joblib\n\n# Load the vectorizer\nvectorizer = joblib.load(\"tfidf_vectorizer.pkl\")\n\n# Load the model\nmodel = joblib.load(\"best_model.pkl\")\n\n# Create a title\nst.title(\"Predict Fake News\")\n\n# Input text\ntext = st.text_input(\"Enter the news article:\")\n\n# Button to run inference\nif st.button(\"Predict\"):\n\n # Convert the text to a vector\n vector = vectorizer.transform([text])\n\n # Predict the label\n label = model.predict(vector)[0]\n\n # Display the label\n if label == 0:\n st.write(\"The news article is fake.\")\n else:\n st.write(\"The news article is real.\")Propulsé par
\n
Nous avons construit avec succès une app Streamlit qui accepte un texte en entrée et prédit l’authenticité des articles de presse.
\n
\n
Utiliser Bard pour le déploiement sur Streamlit Cloud
\n
Pour déployer l’app dans le cloud, demandons l’aide de Bard. Il suffit de pousser notre code vers le dépôt GitHub et de le connecter au serveur Streamlit.
\n
Prompt : \«\ Aidez‑moi à déployer une app sur Streamlit Community Cloud.\ \»
\n
1. Créez un fichier requirements.txt et ajoutez tous les packages Python nécessaires, comme \«\ scikit-learn\ \».
\n
2. Ajoutez les fichiers avec Git, validez (commit) et poussez vers le serveur distant. Assurez‑vous d’avoir inclus le modèle, le vectorizer, app.py et requirements.txt.
\n
\n
3. Rendez‑vous sur share.streamlit.io, cliquez sur \«\ New app\ \», sélectionnez le dépôt GitHub et renseignez les informations requises sur l’application.
Des outils d’IA comme ChatGPT, Bard et Claude nous aident à exceller dans nos tâches quotidiennes de data science. En tirant parti de leurs capacités, nous gagnons en efficacité et en maîtrise, et abordons plus sereinement des problèmes de données complexes.
\n
Dans cet article, nous avons exploré la puissance de la nouvelle version de Bard pour développer des projets de data science complets, de bout en bout. Vous pouvez aussi consulter notre guide Utiliser ChatGPT pour les projets de data science ou suivre un cours complet sur ChatGPT : Introduction to ChatGPT, et découvrir les bonnes pratiques pour rédiger des prompts.
En tant que data scientist certifié, je suis passionné par l'utilisation des technologies de pointe pour créer des applications innovantes d'apprentissage automatique. Avec une solide expérience en reconnaissance vocale, en analyse de données et en reporting, en MLOps, en IA conversationnelle et en NLP, j'ai affiné mes compétences dans le développement de systèmes intelligents qui peuvent avoir un impact réel. En plus de mon expertise technique, je suis également un communicateur compétent, doué pour distiller des concepts complexes dans un langage clair et concis. En conséquence, je suis devenu un blogueur recherché dans le domaine de la science des données, partageant mes idées et mes expériences avec une communauté grandissante de professionnels des données. Actuellement, je me concentre sur la création et l'édition de contenu, en travaillant avec de grands modèles linguistiques pour développer un contenu puissant et attrayant qui peut aider les entreprises et les particuliers à tirer le meilleur parti de leurs données.
Apprenez l'essentiel de l'architecture d'un entrepôt de données, des composants clés aux meilleures pratiques, pour construire un système de données évolutif et efficace !
À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Découvrez les principales différences, les applications et la mise en œuvre de la normalisation et de la standardisation dans le prétraitement des données pour l’apprentissage automatique.
Initiez-vous aux structures de données de Python : apprenez-en plus sur les types de données et les structures de données primitives et non primitives, telles que les chaînes de caractères, les listes, les piles, etc.
Gagnez en confiance dans la régression par les MCO en maîtrisant ses fondements théoriques. Découvrez comment réaliser des mises en œuvre simples dans Excel, R et Python.
La dernière version de Bard, propulsée par le modèle PaLM 2, améliore les performances en raisonnement, en code et en multilingue. Contrairement à ChatGPT, vous devez adapter vos consignes à Bard pour obtenir des réponses de haute qualité.
\nCet article explique comment tirer parti du nouveau Bard pour construire un projet de data science de bout en bout. Vous apprendrez à formuler des prompts efficaces pour générer des idées et du code pour l’expérimentation et le développement.
\nLisez notre article Bard vs ChatGPT pour la data science pour une comparaison détaillée entre Google Bard et ChatGPT, notre article général ChatGPT vs Google Bard, et découvrez aussi notre tutoriel ChatGPT pour les projets de data science pour une autre approche.
\nPlanification du projet
\nLa phase de planification est essentielle dans tout projet, car elle en conditionne la réussite. Durant cette étape, nous analysons les ressources et objectifs disponibles et élaborons un plan décrivant les étapes à suivre pour atteindre nos buts.
\nPour créer une trame de projet, nous allons formuler un prompt détaillé pour Bard incluant toutes les informations pertinentes pour développer notre application de détection des fake news. Il intégrera des détails clés, comme le jeu de données que nous utiliserons — le dataset Fake News Classification issu de l’article WELFake — ainsi que des directives qui guideront l’équipe tout au long du développement.
\nPrompt : \«\ Agissez en tant que Data Science Manager et définissez un plan pour un projet de détection des fake news de bout en bout. Nous disposons déjà du dataset
\nFakeNewsDetectioncomprenant 72 134 lignes et 4 colonnes : [Unnamed: 0, title, text, et label (0 = fake, 1 = real)].\ \»![\"Image]()
\nBien que la trame générique pose de bonnes bases, quelques étapes clés manquent. Nous pouvons les ajouter via un prompt de suivi.
\nPrompt de suivi : \«\ Ajoutez des étapes comme l’EDA, la sélection de modèle, l’optimisation des hyperparamètres, une webapp Streamlit et un déploiement sur Streamlit Cloud. Proposez un plan de projet consolidé.\ \»
\n![\"Image]()
\nIl semble que Bard n’ait pas compris que nous avons déjà un jeu de données et que la collecte n’est pas nécessaire. Vous pouvez écrire un prompt de suivi pour affiner la proposition.
\nPrompt de suivi : \«\ Nous disposons déjà des données, supprimez l’étape de collecte dans le plan de projet.\ \»
\nVoici la trame du projet de détection des fake news :
\n\n- Prétraitement des données
\n- Analyse exploratoire des données (EDA)
\n- Extraction de features
\n- Sélection de modèle
\n- Optimisation des hyperparamètres
\n- Entraînement et évaluation du modèle
\n- Webapp Streamlit
\n- Déploiement sur Streamlit Cloud
\n
\nLe plan de projet inclut une explication détaillée de chaque étape pour construire notre application de détection des fake news, ainsi que des méthodes recommandées pour optimiser les résultats. Il propose également un agenda hebdomadaire précisant tâches clés et jalons.
\nSi la rédaction de prompts vous pose problème ou vous paraît fastidieuse, pas d’inquiétude. Téléchargez notre antisèche de prompt engineering, qui donne accès à plus de 60 prompts conçus par des experts pour différents travaux de data science.
\nBard pour le prétraitement des données
\nÀ cette étape, nous allons charger, nettoyer et réaliser de l’ingénierie des features sur le dataset.
\nChargement des données
\nChangez maintenant de personnage : passez de Data Manager à Data Scientist pour rédiger un prompt de chargement des données.
\nPrompt : \«\ Agissez en Data Scientist confirmé et écrivez du code Python pour charger cinq mille échantillons aléatoires depuis le dataset du projet ci‑dessus.\ \»
\nRemarque : nous réduisons l’échantillon pour entraîner et optimiser les modèles plus rapidement.
\n![\"Image]()
\n\n![\"\"]()
\nNettoyage des données
\nPour garantir un dataset propre et prêt pour l’analyse, nous allons donner à Bard des instructions précises sur les fonctions de nettoyage requises.
\nPrompt : \«\ Écrivez une fonction Python pour nettoyer le dataset. La fonction doit supprimer les valeurs manquantes, retirer la colonne \"Unnamed: 0\", nettoyer le texte et enlever les stopwords.\ \»
\nPour corriger d’éventuels bogues ou erreurs, nous allons demander à Bard de résoudre l’erreur liée aux stopwords. Il comprendra le problème et proposera une version améliorée du code.
\nPrompt mis à jour : \«\ Résolvez l’erreur avec les stopwords.\ \»
\n\n\nNous avons désormais un dataset plutôt propre.
\n![\"image6.png\"]()
\nIngénierie des features
\nPour que Bard génère un code optimal, mieux vaut donner des consignes précises plutôt que des questions vagues. Par exemple, si nous demandons à Bard d’exécuter une fonction spécifique, comme \«\ combiner la longueur des deux colonnes de texte\ \», il produira un code de meilleure qualité, adapté aux besoins du projet.
\nPrompt : \«\ Écrivez maintenant une fonction Python pour effectuer de l’ingénierie des features. Mettez la colonne title en minuscules et combinez text et title, calculez la longueur du texte combiné, comptez les mots uniques, etc.\ \»
\n\nNous avons créé trois nouvelles features que nous utiliserons pour l’analyse.
\n![\"image8.png\"]()
\nBard pour l’analyse exploratoire (EDA)
\nPour l’EDA, nous demanderons à Bard de créer certaines visualisations indispensables à l’exploration des données.
\nPrompt : \«\ Écrivez du code Python pour réaliser l’EDA du projet ci‑dessus. Incluez un histogramme comparant la longueur du texte combiné fake vs real, la distribution des labels et un nuage de mots.\ \»
\nNous allons ajouter un prompt de suivi pour définir les bornes des classes.
\nPrompt de suivi : \«\ Mettez à jour le code EDA avec `np.linspace` pour créer des intervalles de 0 à 200 avec 40 classes.\ \»
\n\nIl semble que les fake news aient une longueur de texte supérieure aux articles réels.
\n![\"image4.png\"]()
\n\nLa distribution des labels est assez équilibrée ; il n’est pas nécessaire d’appliquer un rééquilibrage de classes.
\n![\"image14.png\"]()
\n\n![\"image11.png\"]()
\n\n![\"image10.png\"]()
\nLes articles réels mettent davantage en avant des mots comme \«\ trump\ \» et \«\ said\ \» que les fake news.
\nExtraction de features avec Bard
\nIci, nous allons écrire un prompt pour convertir la colonne \«\ text\ \» en vecteurs et scinder le dataset en ensembles d’entraînement et de test.
\nPrompt : \«\ Convertissez la colonne text en vecteurs et découpez le dataset en jeux d’entraînement et de test.\ \»
\n\nBard pour la sélection de modèle
\nMaintenant que le contexte est posé, vous pouvez poser des questions directes.
\nPrompt : \«\ Procédez à la sélection de modèle.\ \»
\n\n\nD’après notre analyse, tous les modèles testés s’en sortent correctement. Toutefois, le Support Vector Classifier (SVC) obtient la meilleure précision parmi les modèles évalués.
\nRéglage des hyperparamètres avec Bard
\nNous avons demandé à Bard d’écrire du code d’optimisation des hyperparamètres qui enregistre le meilleur modèle et l’objet vectorizer pour le déploiement.
\nPrompt : \«\ Écrivez du code Python pour l’optimisation des hyperparamètres de SVC. Enregistrez aussi le meilleur modèle et le vectorizer avec Joblib.\ \»
\n\n\n\nLa précision s’est légèrement améliorée.
\n\nLe modèle et le vectorizer enregistrés seront utilisés pour l’inférence.
\n\nÉvaluation du modèle avec Bard
\nLa précision ne suffit pas pour un modèle de classification. Il faut aussi mesurer le f1‑score, le recall, la precision et la matrice de confusion.
\nPrompt : \«\ Écrivez du code Python pour l’évaluation du modèle. Incluez un classification report, une confusion matrix et le f1 score.\ \»
\n\nD’après le rapport, notre modèle est assez stable sur le jeu de test.
\n\n\n\n\n\nUtiliser Bard pour une webapp Streamlit
\nUne fois satisfaits des résultats, nous allons développer une application qui convertit le texte saisi en vecteur, le passe au modèle et affiche le résultat.
\nAvant cela, nous devons créer un dépôt GitHub.
\n![\"Image]()
\nClonez le dépôt et enregistrez tous les composants essentiels de l’application. Cette étape garantit leur conservation et facilite le versioning de l’app et du modèle.
\n\nRédigez un prompt générique pour développer une app qui prédit si une news est réelle ou fausse.
\nPrompt : \«\ Écrivez un fichier Python séparé pour créer une web app avec Streamlit afin de prédire si une news est (0 = fake, 1 = real). Incluez uniquement la partie app Streamlit.\ \»
\nCréez ensuite un fichier
\napp.pyet collez-y le code généré par Bard. Une fois fait, lancez l’application avec la commandestreamlit run app.py.Remarque : assurez-vous de disposer de tous les packages Python requis pour exécuter l’app Streamlit.
\nOn dirait que Bard n’a pas chargé le vectorizer. Nous pouvons écrire un prompt de suivi pour corriger cela.
\nPrompt de suivi : \«\ Ajoutez le chargement du Vectorizer et du Model dans le fichier de l’app via joblib.\ \»
\nL’app ne fonctionne pas correctement ; ajoutons un bouton d’exécution pour résoudre ce point.
\nPrompt de suivi : \«\ Ajoutez aussi un bouton pour lancer l’inférence.\ \»
\n\nNous avons construit avec succès une app Streamlit qui accepte un texte en entrée et prédit l’authenticité des articles de presse.
\n![\"Gif]()
\nUtiliser Bard pour le déploiement sur Streamlit Cloud
\nPour déployer l’app dans le cloud, demandons l’aide de Bard. Il suffit de pousser notre code vers le dépôt GitHub et de le connecter au serveur Streamlit.
\nPrompt : \«\ Aidez‑moi à déployer une app sur Streamlit Community Cloud.\ \»
\n1. Créez un fichier
\nrequirements.txtet ajoutez tous les packages Python nécessaires, comme \«\ scikit-learn\ \».2. Ajoutez les fichiers avec Git, validez (commit) et poussez vers le serveur distant. Assurez‑vous d’avoir inclus le modèle, le vectorizer,
\napp.pyetrequirements.txt.![\"Image]()
\n3. Rendez‑vous sur share.streamlit.io, cliquez sur \«\ New app\ \», sélectionnez le dépôt GitHub et renseignez les informations requises sur l’application.
\n![\"Image]()
\nEt voilà. Notre app est déployée et accessible au public sur Streamlit (fake-news-detector.streamlit.app).
\n![\"Image]()
\nConclusion
\nDes outils d’IA comme ChatGPT, Bard et Claude nous aident à exceller dans nos tâches quotidiennes de data science. En tirant parti de leurs capacités, nous gagnons en efficacité et en maîtrise, et abordons plus sereinement des problèmes de données complexes.
\nDans cet article, nous avons exploré la puissance de la nouvelle version de Bard pour développer des projets de data science complets, de bout en bout. Vous pouvez aussi consulter notre guide Utiliser ChatGPT pour les projets de data science ou suivre un cours complet sur ChatGPT : Introduction to ChatGPT, et découvrir les bonnes pratiques pour rédiger des prompts.