Skip to content

Aetis404/Bitcoin-Classification

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Bitcoin Classification - Aetis404

🏆 Résultat

Taux de classification sur la base de validation (2020) : 62.88%

📋 Description du Projet

Ce projet implémente un algorithme de classification pour prédire l'évolution du cours du Bitcoin (hausse ou baisse) en utilisant des techniques d'optimisation continue et de machine learning. L'objectif est de développer un prédicteur capable de déterminer si le cours du Bitcoin va augmenter (classe 0) ou diminuer (classe 1) le jour suivant.

🎯 Objectif

Construire un algorithme de descente de gradient personnalisé pour résoudre un problème de classification binaire basé sur l'historique des cotations du Bitcoin en 2020 et 2021.

📊 Données

Le projet utilise deux fichiers CSV contenant l'historique journalier du Bitcoin :

  • Cotations2020.csv : Base de validation
  • Cotations2021.csv : Base d'apprentissage

Chaque fichier contient 5 colonnes :

  • Date : Jour de la cotation
  • Ouverture : Valeur en euros à l'ouverture du marché
  • Plus Haut : Valeur maximale du jour
  • Plus Bas : Valeur minimale du jour
  • Clôture : Valeur à la clôture du marché

🔧 Technologies Utilisées

  • Python 3.x
  • Pandas : Manipulation des données
  • NumPy : Calculs vectoriels et matriciels
  • Matplotlib : Visualisation des résultats
  • Seaborn : Graphiques avancés
  • Math : Fonctions mathématiques

🧠 Méthodologie

1. Préparation des Données

La fonction CreerData() transforme les données brutes en vecteurs d'apprentissage :

  • Historique (h) : 22 jours
  • Features : 3 caractéristiques par jour (Plus Bas, Plus Haut, Clôture normalisés)
  • Dimension du vecteur : 66 (3 × 22)

2. Modèle de Classification

Fonction de séparation :

H(v) = weights · x + constant

Fonction d'activation : Sigmoïde logistique

S(x) = 1 / (1 + e^(-λx))

Fonction de perte : Entropie croisée (cross-entropy)

L = -Σ [c·log(S(H)) + (1-c)·log(1-S(H))]

3. Algorithme d'Optimisation

Algorithme utilisé : Adam (Adaptive Moment Estimation)

Paramètres optimisés :

  • Learning rate : 3
  • Beta1 : 0.9999
  • Beta2 : 0.9
  • Epsilon : 0.31
  • Seuil de prédiction : 0.51 (au lieu de 0.50 pour améliorer les performances)

Critère d'arrêt : Norme du gradient < epsilon

📈 Résultats

Le modèle affiche :

  • Le taux de bonnes classifications
  • La matrice de confusion (Vrais Positifs, Faux Positifs, Vrais Négatifs, Faux Négatifs)
  • L'évolution de l'erreur et de la norme du gradient pendant l'apprentissage

🚀 Utilisation

1. Installation des dépendances

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb
import math
import random as rd

2. Exécution de l'apprentissage

# Charger les données d'apprentissage
(RawData, RawC) = LireDonnees("Cotations2021.csv")
(D, C) = CreerData(RawData, RawC)

# Entraîner le modèle
(weights, constant) = Algorithme_Gradient()

3. Évaluation du modèle

# Prédictions sur la base d'apprentissage
Cpred = PredictionsOnBase(weights, constant, D)

# Prédictions sur la base de validation (2020)
(RawData, RawC) = LireDonnees("Cotations2020.csv")
(D, C) = CreerData(RawData, RawC)
Cpred = PredictionsOnBase(weights, constant, D)

📝 Fonctions Principales

Fonction Description
LireDonnees(NomFichier) Lit un fichier CSV et crée les structures RawData et RawC
CreerData(RawData, RawC) Transforme les données brutes en matrices D et vecteur C
H(weights, constant, point) Calcule la fonction de séparation linéaire
Sigmoid(x, lamda) Applique la fonction sigmoïde
Loss_function(weights, constant) Calcule la fonction de perte
Gradient(weights, constant) Calcule le gradient de la fonction de perte
Algorithme_Gradient() Implémente l'algorithme Adam
Prediction(weights, constant, v) Prédit la classe pour un vecteur v
PredictionsOnBase(weights, constant, D) Prédit les classes pour une base complète

💡 Optimisations Appliquées

  1. Choix de l'historique : 22 jours optimisent le compromis biais-variance
  2. Normalisation des features : Différences relatives plutôt que valeurs absolues
  3. Algorithme Adam : Convergence plus rapide que la descente de gradient classique
  4. Seuil de prédiction ajusté : 0.51 au lieu de 0.50 pour +0.44% de précision
  5. Epsilon optimisé : 0.31 pour limiter le surapprentissage

📄 Fichiers du Projet

  • Bitcoin Classification.ipynb : Notebook principal avec le code et l'analyse
  • Cotations2020.csv : Données de validation
  • Cotations2021.csv : Données d'apprentissage

👤 Auteur

Aetis404

Projet réalisé dans le cadre de l'option Optimisation IA


Ce projet démontre l'application pratique des algorithmes d'optimisation continue pour résoudre des problèmes de machine learning réels.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors