Spaces:
Sleeping
Sleeping
File size: 3,927 Bytes
06c3be1 8218a11 9cdd02f 06c3be1 9cdd02f f586f9f 4538ba0 9cdd02f 06c3be1 91a67a4 06c3be1 9cdd02f 06c3be1 9cdd02f 06c3be1 9cdd02f 91a67a4 9cdd02f 06c3be1 9cdd02f 06c3be1 9cdd02f 06c3be1 9cdd02f 06c3be1 9cdd02f 06c3be1 9cdd02f 06c3be1 9cdd02f 06c3be1 9cdd02f 06c3be1 4538ba0 91a67a4 4538ba0 9cdd02f 06c3be1 9cdd02f 06c3be1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
import pandas as pd
import gradio as gr
import numpy as np
import plotly.express as px
import pickle
from sklearn.preprocessing import StandardScaler
# Charger les modèles sauvegardés
with open("scaler.pkl", "rb") as f:
scaler = pickle.load(f)
with open("pca_model.pkl", "rb") as f:
pca_model = pickle.load(f)
with open("kmeans_model.pkl", "rb") as f:
model_cluster = pickle.load(f)
# Vérifie si le fichier existe et charge-le
try:
with open("lg.pkl", "rb") as f:
model_diabetes = pickle.load(f)
print("Model loaded successfully!")
except FileNotFoundError:
print("File 'lg.pkl' not found.")
except EOFError:
print("File 'lg.pkl' is empty or corrupted.")
# Charger le dataframe (assurez-vous de mettre le bon chemin vers votre fichier)
df_scaled = pd.read_csv("data.csv") # Remplacez par le chemin réel du fichier
# Appliquer PCA pour transformer les données en 2D et prédire les clusters
pca_result = pca_model.transform(df_scaled)
pca_df = pd.DataFrame(pca_result, columns=['PC1', 'PC2'])
pca_df['Cluster'] = model_cluster.predict(df_scaled)
# Fonction de prédiction du diabète
def predict_diabetes(pregnancies, glucose, blood_pressure, skin_thickness, insulin, bmi, dpf, age):
input_data = np.array([[pregnancies, glucose, blood_pressure, skin_thickness, insulin, bmi, dpf, age]])
prediction = model_diabetes.predict(input_data)[0] # Utilise le modèle de régression logistique pour prédire
return "Diabétique" if prediction == 1 else "Non diabétique"
# Fonction pour afficher les clusters
def plot_clusters(selected_cluster):
# Filtrer par le cluster sélectionné (si "Tous" n'est pas choisi)
if selected_cluster != "Tous":
selected_data = pca_df[pca_df['Cluster'] == int(selected_cluster)]
else:
selected_data = pca_df
if selected_data.empty:
return px.scatter(title="Aucun point à afficher")
# Créer le graphique avec Plotly
fig = px.scatter(selected_data, x='PC1', y='PC2', color=selected_data['Cluster'].astype(str),
title=f"Visualisation du Cluster {selected_cluster}", labels={'color': 'Cluster'})
return fig
# Fonction pour télécharger les clusters en CSV
def download_clusters():
return df.to_csv(index=False), "clusters.csv"
# Interface utilisateur Gradio
with gr.Blocks() as app:
gr.Markdown("## Application Machine Learning : Classification et Clustering")
# **Section Classification**
gr.Markdown("### Prédiction du Diabète")
with gr.Row():
pregnancies = gr.Number(label="Grossesses")
glucose = gr.Number(label="Glucose")
blood_pressure = gr.Number(label="Pression artérielle")
with gr.Row():
skin_thickness = gr.Number(label="Épaisseur de peau")
insulin = gr.Number(label="Insuline")
bmi = gr.Number(label="IMC")
with gr.Row():
dpf = gr.Number(label="DPF")
age = gr.Number(label="Âge")
predict_button = gr.Button("Prédire")
output_label = gr.Textbox(label="Résultat")
predict_button.click(fn=predict_diabetes,
inputs=[pregnancies, glucose, blood_pressure, skin_thickness, insulin, bmi, dpf, age],
outputs=output_label)
# **Section Clustering**
gr.Markdown("### Visualisation des Clusters des Réactions en Ligne")
# Calculate unique clusters after PCA and prediction
unique_clusters = pca_df['Cluster'].unique()
cluster_selector = gr.Dropdown(["Tous"] + [str(i) for i in unique_clusters],
label="Sélectionner un cluster")
cluster_plot = gr.Plot()
cluster_selector.change(fn=plot_clusters, inputs=[cluster_selector], outputs=[cluster_plot])
# Téléchargement des clusters
download_button = gr.Button("Télécharger les clusters")
download_button.click(fn=download_clusters, outputs=gr.File())
app.launch() |