Développer des outils de data mining (exploitation de données) personnalisés, Excel VBA

Développer des outils de data mining (exploitation de données) personnalisés, Excel VBA

Pour développer des outils de data mining (exploitation de données) personnalisés dans Excel VBA, nous devons nous concentrer sur l’extraction de modèles significatifs et d’informations utiles à partir de grands ensembles de données. Un processus typique de data mining comprend la collecte des données, leur prétraitement, leur exploration, la modélisation, l’évaluation et le déploiement. Voici un exemple de la façon dont vous pouvez créer un outil simple d’exploration de données en utilisant VBA.
Fonctionnalités clés :
1. Chargement des données : Charger les données depuis une feuille Excel ou un fichier externe.
2. Prétraitement : Nettoyer les données (par exemple, supprimer les doublons, gérer les valeurs manquantes).
3. Exploration des données : Statistiques sommaires, analyse des corrélations et visualisations.
4. Modélisation : Modèles simples d’exploration de données (par exemple, classification ou regroupement).
5. Évaluation : Mesures de précision, rappel et autres métriques.
Exemple de code VBA pour un outil simple de data mining
1. Configuration de la feuille de données
Supposons que nous ayons une feuille appelée « Data » contenant des données brutes avec des en-têtes dans la première ligne. Nous allons explorer les données en fonction d’analyses simples comme la classification ou le regroupement.
2. Code VBA pour le chargement des données et leur prétraitement

Sub LoadAndPreprocessData()
    Dim ws As Worksheet
    Dim rng As Range
    Dim lastRow As Long, lastCol As Long
    Dim data As Variant
    ' Définir la feuille de données
    Set ws = ThisWorkbook.Sheets("Data")
    ' Trouver la dernière ligne et colonne des données
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
    ' Charger les données dans un tableau
    Set rng = ws.Range(ws.Cells(2, 1), ws.Cells(lastRow, lastCol))
    data = rng.Value
    ' Prétraitement des données : suppression des doublons (par exemple)
    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(data, 1)
        If Not dict.Exists(data(i, 1)) Then
            dict.Add data(i, 1), i
        End If
    Next i
    ' Copier les données uniques dans la feuille
    Dim uniqueData() As Variant
    ReDim uniqueData(1 To dict.Count, 1 To lastCol)
    Dim index As Long
    index = 1
    For Each Key In dict.Keys
        For j = 1 To lastCol
            uniqueData(index, j) = data(dict(Key), j)
        Next j
        index = index + 1
    Next Key
    ' Effacer les anciennes données et coller les données uniques
    ws.Range(ws.Cells(2, 1), ws.Cells(lastRow, lastCol)).ClearContents
    ws.Range(ws.Cells(2, 1), ws.Cells(dict.Count + 1, lastCol)).Value = uniqueData
    MsgBox "Données chargées et prétraitées (doublons supprimés)."
End Sub

Explication :

  • Cette procédure charge les données de la feuille « Data » dans un tableau.
  • Elle supprime ensuite les doublons en fonction de la première colonne (cela peut être adapté à d’autres critères).
  • Elle copie les valeurs uniques de retour dans la feuille Excel.

3. Exploration des données : Statistiques sommaires

Sub GenerateDataSummary()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Data")
    ' Calculer des statistiques sommaires
    Dim lastRow As Long, lastCol As Long
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
    Dim meanVal As Double
    Dim sumVal As Double
    Dim countVal As Long
    Dim i As Long
    For i = 1 To lastCol
        sumVal = Application.WorksheetFunction.Sum(ws.Range(ws.Cells(2, i), ws.Cells(lastRow, i)))
        countVal = Application.WorksheetFunction.Count(ws.Range(ws.Cells(2, i), ws.Cells(lastRow, i)))
        meanVal = sumVal / countVal
        ' Afficher le résumé dans la fenêtre immédiate (Ctrl+G pour voir)
        Debug.Print "Colonne " & ws.Cells(1, i).Value & " - Moyenne : " & meanVal
    Next i
    MsgBox "Les statistiques sommaires ont été générées dans la fenêtre immédiate."
End Sub

Explication :

  • Cette procédure calcule la moyenne pour chaque colonne (en supposant que les données soient numériques).
  • Vous pouvez l’étendre pour calculer d’autres statistiques comme la médiane, le mode, l’écart-type, etc.
  • Les résultats sont affichés dans la fenêtre immédiate pour une revue rapide.

4. Clustering des données (exemple K-Means)
Pour implémenter un modèle de clustering simple comme K-Means (apprentissage non supervisé), vous pouvez utiliser la capacité de VBA à manipuler des tableaux et à travailler sur le processus itératif du clustering.

Sub KMeansClustering()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Data")
    Dim dataRange As Range
    Set dataRange = ws.Range("A2:B100") ' Supposons que les données se trouvent dans les colonnes A et B
    Dim data As Variant
    data = dataRange.Value
    Dim centroids(1 To 2, 1 To 2) As Double ' Exemple avec deux clusters (peut être généralisé)
    Dim clusterAssignments() As Integer
    ReDim clusterAssignments(1 To UBound(data, 1))
    ' Initialiser les centroides aléatoirement (cela peut être amélioré)
    centroids(1, 1) = data(1, 1)
    centroids(1, 2) = data(1, 2)
    centroids(2, 1) = data(UBound(data, 1), 1)
    centroids(2, 2) = data(UBound(data, 1), 2)
    Dim iteration As Long
    For iteration = 1 To 100 ' Nombre d'itérations maximal
        ' Assigner les points au centroïde le plus proche
        For i = 1 To UBound(data, 1)
            Dim minDist As Double
            minDist = 99999999
            For j = 1 To 2 ' Pour chaque centroïde
                Dim dist As Double
                dist = Sqr((data(i, 1) - centroids(j, 1)) ^ 2 + (data(i, 2) - centroids(j, 2)) ^ 2)
                If dist < minDist Then minDist = dist clusterAssignments(i) = j End If Next j Next i ' Recalculer les centroides Dim sumX(1 To 2) As Double, sumY(1 To 2) As Double Dim count(1 To 2) As Long For i = 1 To UBound(data, 1) sumX(clusterAssignments(i)) = sumX(clusterAssignments(i)) + data(i, 1) sumY(clusterAssignments(i)) = sumY(clusterAssignments(i)) + data(i, 2) count(clusterAssignments(i)) = count(clusterAssignments(i)) + 1 Next i For j = 1 To 2 ' Mettre à jour les centroides If count(j) > 0 Then
                centroids(j, 1) = sumX(j) / count(j)
                centroids(j, 2) = sumY(j) / count(j)
            End If
        Next j
    Next iteration
    MsgBox "Le clustering K-Means est terminé."
End Sub

Explication :

  • Cette procédure implémente un algorithme K-Means simple, où les points de données sont assignés à des clusters en fonction du centroïde le plus proche.
  • Les centroides sont ensuite recalculés à chaque itération, affinant l’assignation des clusters.

5. Évaluation (Précision, Rappel, etc.)
Pour les tâches de classification, vous pouvez évaluer la performance de votre modèle en utilisant des métriques comme la précision et le rappel.

Sub EvaluateModel()
    Dim actualValues As Range
    Set actualValues = ThisWorkbook.Sheets("Data").Range("C2:C100") ' Valeurs réelles (vérité terrain)
    Dim predictedValues As Range
    Set predictedValues = ThisWorkbook.Sheets("Data").Range("D2:D100") ' Valeurs prédites
    Dim correct As Long, falsePositives As Long, falseNegatives As Long, trueNegatives As Long
    correct = 0
    falsePositives = 0
    falseNegatives = 0
    trueNegatives = 0
    Dim i As Long
    For i = 1 To actualValues.Rows.Count
        If actualValues.Cells(i, 1).Value = 1 And predictedValues.Cells(i, 1).Value = 1 Then
            correct = correct + 1
        ElseIf actualValues.Cells(i, 1).Value = 0 And predictedValues.Cells(i, 1).Value = 1 Then
            falsePositives = falsePositives + 1
        ElseIf actualValues.Cells(i, 1).Value = 1 And predictedValues.Cells(i, 1).Value = 0 Then
            falseNegatives = falseNegatives + 1
        Else
            trueNegatives = trueNegatives + 1
        End If
    Next i
    Dim accuracy As Double
    accuracy = correct / actualValues.Rows.Count
    Dim precision As Double
    precision = correct / (correct + falsePositives)
    Dim recall As Double
    recall = correct / (correct + falseNegatives)
    MsgBox "Précision : " & accuracy & vbCrLf & "Précision : " & precision & vbCrLf & "Rappel : " & recall
End Sub

Explication :

  • Cette procédure évalue la performance d’un modèle de classification binaire en calculant la précision, le rappel et la précision (en comparant les valeurs réelles et prédites).

Conclusion
Ce code fournit un cadre de base pour développer un outil de data mining dans Excel VBA. Vous pouvez l’améliorer en ajoutant des techniques plus avancées telles que les arbres de décision, l’extraction de règles d’association ou des algorithmes de clustering plus sophistiqués. L’avantage de VBA est sa capacité à manipuler les données directement au sein d’Excel, ce qui en fait un outil puissant pour des solutions personnalisées de data mining.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x