λογισμικό

Γνώση Υπολογιστών >> λογισμικό >  >> Word λογισμικό επεξεργασίας

Υπάρχει κάποιος κώδικας matlab για τεχνική εξόρυξης δεδομένων αλγόριθμου συσχέτισης δέντρων συχνών προτύπων;

Εδώ είναι μια απλή υλοποίηση MATLAB του αλγόριθμου συσχέτισης FP-Tree για εξόρυξη δεδομένων. Αυτός ο κώδικας βρίσκει συχνά σύνολα στοιχείων και κανόνες συσχέτισης από ένα δεδομένο σύνολο συναλλαγών.

```

% Δημιουργήστε την αρχική βάση δεδομένων συναλλαγών ως πίνακα κελιών

συναλλαγές ={...

{'Ψωμί', 'Γάλα', 'Βούτυρο'}, ...

{'Ψωμί', 'Πάνες', 'Μπύρα', 'Αυγά'}, ...

{'Γάλα', 'Πάνες', 'Μπύρα', 'Κόκα'}, ...

{'Ψωμί', 'Γάλα', 'Πάνες', 'Κόκα'}, ...

{'Ψωμί', 'Αυγά', 'Μπύρα'} ...

};

% Μετατροπή συναλλαγών σε δυαδικό πίνακα

binaryTransactions =zeros(size(transactions, 1), size(unique([transactions{:}]), 2));

για i =1:μέγεθος (συναλλαγές, 1)

για j =1:size(συναλλαγές{i}, 2)

binaryTransactions(i, strcmp(transactions{i}{j}, unique([transactions{:}]))) =1;

τέλος

τέλος

% Δημιουργήστε ένα συχνό δέντρο προτύπων από τον πίνακα δυαδικών συναλλαγών

fpTree =fptree(binaryTransactions);

% Βρείτε όλα τα συχνά σύνολα στοιχείων με ελάχιστη υποστήριξη 2

frequencyItemsets =find_frequent_itemsets(fpTree, 2);

% Δημιουργία κανόνων συσχέτισης από τα συχνά σύνολα στοιχείων

AssociationRules =generate_association_rules(frequentItemsets);

% Εμφάνιση των συχνών συνόλων στοιχείων και των κανόνων συσχέτισης

disp('Συχνά σύνολα στοιχείων:');

disp('------------------');

για i =1:length(frequentItemsets)

fprintf('%s\n', strjoin(frequentItemsets{i}, ', '));

τέλος

disp('Κανόνες συσχέτισης:');

disp('------------------');

για i =1:length(associationRules)

lhs =strjoin(associationRules{i}.lhs, ', ');

rhs =strjoin(associationRules{i}.rhs, ', ');

εμπιστοσύνη =AssociationRules{i}. εμπιστοσύνη * 100;

support =AssociationRules{i}.support * 100;

fprintf('Εάν %s, τότε %s. Εμπιστοσύνη =%f%%, Υποστήριξη =%f%%\n', lhs, rhs, εμπιστοσύνη, υποστήριξη);

τέλος

% Λειτουργία για τη δημιουργία ενός δέντρου συχνών προτύπων από έναν πίνακα δυαδικών συναλλαγών

συνάρτηση fpTree =fptree(συναλλαγές)

headerTable =create_header_table(transactions);

root =add_node(-1, headerTable.id);

fpTree =struct('root', root, 'headerTable', headerTable);

για i =1:μέγεθος (συναλλαγές, 1)

add_transaction(transactions(i, :), root, headerTable);

τέλος

τέλος

% Λειτουργία για τη δημιουργία πίνακα κεφαλίδων από τις συναλλαγές

συνάρτηση headerTable =create_header_table (συναλλαγές)

headerTable =struct();

uniqueItems =μοναδικό([συναλλαγές{:}]);

for i =1:size(uniqueItems, 2)

headerTable(uniqueItems{i}).id =i;

headerTable(uniqueItems{i}).count =sum(sum(transactions ==uniqueItems{i}));

headerTable(uniqueItems{i}).link =[];

τέλος

τέλος

% Λειτουργία για την προσθήκη μιας συναλλαγής στο FP-Tree

συνάρτηση add_transaction (συναλλαγή, κόμβος, headerTable)

εάν είναι κενό (συναλλαγή)

απόδοση;

τέλος

% Βρείτε το στοιχείο με τη μεγαλύτερη συχνότητα στη συναλλαγή

maxFrequency =0;

maxItem ='';

για i =1:length (συναλλαγή)

if headerTable(transaction{i}).count> maxFrequency

maxFrequency =headerTable(transaction{i}).count;

maxItem =συναλλαγή{i};

τέλος

τέλος

% Εάν ο κόμβος δεν έχει παιδί για το maxItem, δημιουργήστε ένα

εάν είναι κενό (node.children)

node.children(maxItem).id =headerTable(maxItem).id;

node.children(maxItem).count =1;

node.children(maxItem).link =headerTable(maxItem).link;

node.children(maxItem).parent =node;

αλλού

if isfield(node.children, maxItem)

node.children(maxItem).count =node.children(maxItem).count + 1;

αλλού

node.children(maxItem).id =headerTable(maxItem).id;

node.children(maxItem).count =1;

node.children(maxItem).link =headerTable(maxItem).link;

node.children(maxItem).parent =node;

τέλος

τέλος

% Ενημερώστε τον πίνακα κεφαλίδων

headerTable(maxItem).link =node;

% Προσθέστε αναδρομικά τα υπόλοιπα στοιχεία στο δέντρο

για i =1:length (συναλλαγή)

if ~(strcmp(maxItem, συναλλαγή{i}))

add_transaction(transaction(2:end), node.children(maxItem), headerTable);

τέλος

τέλος

τέλος

% Λειτουργία για εύρεση όλων των συχνών συνόλων στοιχείων από το FP-Tree

συνάρτηση frequencyItemsets =find_frequent_itemsets (fpTree, minSupport)

frequencyItemsets ={};

% Βρείτε αναδρομικά συχνά σύνολα στοιχείων από κάθε κλάδο του FP-Tree

για κλάδο στο fpTree.root.children.keys

branchFrequency =fpTree.headerTable(branch).count;

% Εάν η συχνότητα διακλάδωσης είναι μικρότερη από την ελάχιστη υποστήριξη, συνεχίστε στην επόμενη διακλάδωση

εάν διακλάδωσηΣυχνότητα συνεχίζω;

τέλος

% Προσθέστε το στοιχείο διακλάδωσης ως συχνό σύνολο στοιχείων

frequencyItemsets{end + 1} ={branch};

% Βρείτε αναδρομικά συχνά σύνολα στοιχείων για όλα τα υποδέντρα του τρέχοντος κλάδου

subFrequentItemsets =find_frequent_itemsets(subtrees(fpTree.root, branch), minSupport);

% Προσθέστε το στοιχείο διακλάδωσης σε όλα τα συχνά σύνολα στοιχείων από το υποδέντρο

για i =1:length(subFrequentItemsets)

subFrequentItemsets{i}{1} =[branch, subFrequentItemsets{i}{1}];

frequencyItemsets{end + 1} =subFrequentItemsets{i};

τέλος

τέλος

τέλος

% Λειτουργία για τη δημιουργία κανόνων συσχέτισης από τα συχνά σύνολα στοιχείων

συνάρτηση AssociationRules =generate_association_rules(frequentItemsets)

AssociationRules ={};

% Για κάθε συχνό σύνολο στοιχείων, δημιουργήστε όλους τους πιθανούς κανόνες συσχέτισης

for itemset =συχνάΣύνολο στοιχείων

για i =1:length (σύνολο στοιχείων)

% Δημιουργήστε το προηγούμενο και το επακόλουθο για τον κανόνα

προηγούμενο =σύνολο στοιχείων(1:i-1);

consequent =σύνολο στοιχείων(i+1:end);

% Υπολογίστε την υποστήριξη, την εμπιστοσύνη και την άρση του κανόνα

υποστήριξη =100 * (find_support(union(antecedent, consequent)) / find_support(antecedent));

εμπιστοσύνη =100 * (find_support(union(antecedent, consequent)) / find_support(antecedent));

lift =σιγουριά / (100 * find_support(consequent) / find_support(antecedent));

% Προσθέστε τον κανόνα συσχέτισης στη λίστα

AssociationRules{end + 1} =struct('lhs', antecedent, 'rhs', consequent, ' εμπιστοσύνη', εμπιστοσύνη, 'υποστήριξη', υποστήριξη);

τέλος

τέλος

τέλος

% Λειτουργία για την εύρεση της υποστήριξης ενός συνόλου στοιχείων

υποστήριξη συνάρτησης =find_support (σύνολο στοιχείων)

υποστήριξη =0;

% Επαναλάβετε όλες τις συναλλαγές και ελέγξτε εάν περιέχουν το σύνολο στοιχείων

για i =1:μέγεθος (δυαδικές συναλλαγές, 1)

if all(binaryTransactions(i, ismember(unique([binaryTransactions{:}]), itemset)))

υποστήριξη =υποστήριξη + 1;

τέλος

τέλος

τέλος

```

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα