
Comment écrire un algorithme d'exploration de règles d'association en utilisant C#
Introduction :
L'exploration de règles d'association est l'une des tâches importantes de l'exploration de données, utilisée pour découvrir des modèles et des corrélations cachés dans des ensembles de données. Les applications courantes incluent l'analyse du panier de consommation, les systèmes de recommandation, l'analyse du comportement des utilisateurs du réseau, etc. Cet article explique comment utiliser C# pour écrire un algorithme d'exploration de règles d'association et donne des exemples de code spécifiques.
1. Introduction à l'algorithme d'exploration de règles d'association
L'objectif de l'algorithme d'exploration de règles d'association est de découvrir des ensembles d'éléments fréquents et des règles d'association dans l'ensemble de données. Les ensembles d'éléments fréquents font référence à des combinaisons d'éléments qui apparaissent fréquemment dans l'ensemble de données, tandis que les règles d'association sont des modèles dérivés d'ensembles d'éléments fréquents. L'algorithme comprend principalement deux étapes : 1) Générer des ensembles d'éléments candidats ; 2) Filtrer les ensembles d'éléments fréquents et générer des règles d'association.
2. Code C# pour implémenter l'algorithme d'exploration de règles d'association
- Préparation des données
Tout d'abord, nous devons préparer un ensemble de données contenant des données de transaction. Il peut être représenté à l'aide de la structure List de C#, où chaque List représente une transaction et chaque élément représente un élément.
1 2 3 4 5 | List<List<string>> dataset = new List<List<string>>();
dataset.Add( new List<string> { "A" , "B" , "C" });
dataset.Add( new List<string> { "A" , "B" , "D" });
dataset.Add( new List<string> { "B" , "C" , "D" });
|
Copier après la connexion
- Générer des ensembles d'éléments candidats
Ensuite, nous devons générer des ensembles d'éléments candidats en fonction de l'ensemble de données. Les ensembles d'éléments candidats font référence à des ensembles d'éléments qui peuvent devenir des ensembles d'éléments fréquents. Il peut être représenté à l’aide de la structure Dictionary de C#, où la clé représente l’ensemble d’éléments candidats et la valeur représente le nombre de supports de l’ensemble d’éléments candidats.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Dictionary<List<string>, int> candidateItemsets = new Dictionary<List<string>, int>();
foreach (List<string> transaction in dataset)
{
foreach (string item in transaction)
{
List<string> candidate = new List<string> { item };
if (candidateItemsets.ContainsKey(candidate))
{
candidateItemsets[candidate]++;
}
else
{
candidateItemsets.Add(candidate, 1);
}
}
}
|
Copier après la connexion
- Filtrage des ensembles d'éléments fréquents
Dans cette étape, nous filtrerons les ensembles d'éléments fréquents. Les ensembles d'éléments fréquents font référence à des ensembles d'éléments dont la prise en charge n'est pas inférieure au seuil. Il peut être représenté par la structure List de C#, où chaque List représente un ensemble d'éléments fréquents.
1 2 3 4 5 6 7 8 9 10 11 | List<List<string>> frequentItemsets = new List<List<string>>();
int supportThreshold = 2;
foreach ( var itemset in candidateItemsets)
{
if (itemset.Value >= supportThreshold)
{
frequentItemsets.Add(itemset.Key);
}
}
|
Copier après la connexion
- Générer des règles d'association
Enfin, nous générerons des règles d'association basées sur des ensembles d'éléments fréquents. Les règles d'association font référence à des règles entre des ensembles d'éléments fréquents avec un certain degré de confiance. Il peut être représenté à l’aide de la structure List Tuple de C#, où chaque Tuple représente une règle d’association.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | List<Tuple<List<string>, List<string>>> associationRules = new List<Tuple<List<string>, List<string>>>();
double confidenceThreshold = 0.5;
foreach ( var frequentItemset in frequentItemsets)
{
int itemsetLength = frequentItemset. Count ;
for (int i = 1; i < itemsetLength; i++)
{
List<List<string>> combinations = GetCombinations(frequentItemset, i);
foreach ( var combination in combinations)
{
List<string> remainingItems = frequentItemset.Except(combination).ToList();
double confidence = (double)candidateItemsets[frequentItemset] / candidateItemsets[combination];
if (confidence >= confidenceThreshold)
{
associationRules.Add( new Tuple<List<string>, List<string>>(combination, remainingItems));
}
}
}
}
|
Copier après la connexion
- Fonction auxiliaire
Dans le code ci-dessus, nous utilisons une fonction auxiliaire GetCombinations pour générer des combinaisons d'ensembles d'éléments. L’implémentation spécifique du code est donnée ci-dessous.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public List<List<string>> GetCombinations(List<string> items, int length)
{
List<List<string>> combinations = new List<List<string>>();
Combine(items, length, 0, new List<string>(), combinations);
return combinations;
}
private void Combine(List<string> items, int length, int start, List<string> currentCombination, List<List<string>> combinations)
{
if (length == 0)
{
combinations.Add( new List<string>(currentCombination));
return ;
}
if (start == items. Count )
{
return ;
}
currentCombination.Add(items[start]);
Combine(items, length - 1, start + 1, currentCombination, combinations);
currentCombination.RemoveAt(currentCombination. Count - 1);
Combine(items, length, start + 1, currentCombination, combinations);
}
|
Copier après la connexion
3. Résumé
Cet article explique comment utiliser C# pour écrire un algorithme d'exploration de règles d'association et donne des exemples de code spécifiques. Grâce aux trois étapes consistant à générer des ensembles d'éléments candidats, à filtrer les ensembles d'éléments fréquents et à générer des règles d'association, nous pouvons découvrir des modèles et des associations cachés à partir d'un ensemble de données de transaction. J'espère que cet article sera utile pour comprendre les algorithmes d'exploration de règles d'association et la programmation C#.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!