Questo progetto nasce come esercizio di apprendimento per uno junior Python developer con un interesse crescente verso la Data Analysis e Machine Learning. L'obiettivo è quello di combinare analisi dei dati con un'interfaccia grafica interattiva costruita con PyQt5, esplorando concetti fondamentali come: - Manipolazione dei dati con Python, - Presentazione di elementi visivi interattivi, - Gestione di animazioni e feedback visivi per l'utente.
Il tuo primo alleato per affrontare le Kaggle Competition con facilità
BeFirstKC è un’app desktop basata su PyQt5 che guida gli utenti, anche alle prime armi, attraverso l’intero workflow di una competizione Kaggle:
- Caricamento dei dati
- Preprocessing e gestione dei valori mancanti
- Imputazione delle feature categoriche
- Encoding delle variabili
- Visualizzazione dei dati
- Addestramento e ottimizzazione di modelli XGBoost / LightGBM
- Generazione del file di submission
Ti offre un’interfaccia grafica intuitiva senza dover scrivere alle prime armi lunghe righe di codice. Pronto a salire sul podio?
- Interfaccia a schede divisa per fasi: Load, Preprocess, Impute Cat, Encode, Visualize, Model, Submission
- Preview interattivo dei dataset (head e statistiche)
- Trasformazioni numeriche: Yeo–Johnson, Standard Scaling
- Imputazione: media, mediana, moda, strategia categoriale (mode, costante, random)
- Label & One-Hot Encoding, con gestione automatica delle colonne
- Visualizzazioni: istogrammi, boxplot, matrici di correlazione
- Modeling: training rapido, valutazioni (accuracy/R², MAE, MSE, RMSE, confusion matrix)
- Hyperparameter tuning con Optuna (ricerca automatica dei migliori parametri)
- Esportazione del modello e del CSV di submission pronto per il caricamento su Kaggle
BeFirstKC/
├── main.py # Entry point dell’applicazione
├── widgets.py # Pulsanti animati e componenti custom
├── style.qss # Foglio di stile Qt per temi e colori
├── fonts/ # Cartella con font (es. Roboto)
│ └── Roboto-Regular.ttf
├── README.md # Questo file
└── requirements.txt # Dipendenze Python
- Python 3.7 - 3.10
- Sistema operativo: Windows, macOS o Linux
- Pacchetti elencati in
requirements.txt(PyQt5, pandas, scikit-learn, XGBoost, LightGBM, Optuna, seaborn, matplotlib…)
- Clona il repository:
git clone https://github.com/tuo-utente/BeFirstKC.git cd BeFirstKC - Crea un ambiente virtuale:
python -m venv venv source venv/bin/activate # Linux / macOS venv\Scripts\activate # Windows
- Installa le dipendenze:
pip install -r requirements.txt
python main.pyAlla partenza verrà caricata l’interfaccia grafica BeFirstKC. Se non trovi il font Roboto, l’app userà quello di sistema senza interrompersi.
-
Load Data
- Carica i file CSV di train e test.
- Visualizza le prime righe e le statistiche descrittive.
-
Preprocess
- Seleziona colonne numeriche da trasformare (Yeo–Johnson o Standard Scaling).
- Gestisci outlier, NaN e valori infiniti.
- Usa “Drop NaN” o “Impute Numeric” (media/mediana/moda).
-
Impute Cat
- Scegli le colonne categoriche e la strategia (Mode, Constant, Random).
- Esegui l’imputazione con un click.
-
Encode
- Attiva Label Encoding e/o One-Hot Encoding.
- Il tool rinomina e concatena automaticamente le nuove colonne.
-
Visualize
- Esplora la distribuzione delle variabili (istogrammi, boxplot).
- Studia le correlazioni con la heatmap.
-
Model
- Seleziona le colonne da droppare (es. ID o fuori tema).
- Scegli Target e tipo di modello (Classifier/Regressor).
- Esegui il Train veloce per un feedback istantaneo.
- Premi Optimize per far girare Optuna e trovare i parametri ottimali.
- Usa “Train Best Params” e confronta le metriche.
-
Submission
- Scegli la colonna ID e genera il CSV di submission.
- Carica il file su Kaggle e… buona competizione!
- Yeo–Johnson: trasforma la distribuzione verso una forma più gaussiana, migliorando la performance di molti modelli.
- Standard Scaling: normalizza le feature per avere media 0 e varianza 1, cruciale per algoritmi basati su gradiente.
- Label vs One-Hot Encoding:
- Label Encoding: assegna interi a categorie—veloce ma può introdurre ordine artificiale.
- One-Hot: crea nuove colonne binarie, evita ordini ma aumenta dimensionalità.
- Optuna: framework di hyperparameter tuning basato su ricerca bayesiana, che riduce i tempi di sperimentazione rispetto alla grid/random search.
- Monitora la distribuzione delle feature dopo le trasformazioni.
- Occhio al data leakage: non applicare informazioni del test nel preprocessing del train.
- Sperimenta diverse metriche a seconda del tipo di competizione (es. RMSE per regression, AUC per classification).
Distributed under the MIT License. Vedi LICENSE per i dettagli.