--Lorsque je cherchais une implémentation Python d'Apriori, il semble qu'elle soit implémentée dans Orange, donc un mémo quand je l'ai essayé
--Il existe une nouvelle version d'Orange 3 et une ancienne version d'Orange 2 (Orange 2.7.8 du 11/09/2016)
--Alors installez Orange 2
Voici un exemple d'installation sur Ubuntu
Téléchargez le fichier source depuis Site officiel et extrayez-le
Construisez et installez comme décrit dans Python Software Foundation
python setup.py build
python setup.py install
Si vous n'avez pas besoin de scipy, installez-le
Apriori
J'ai fait référence à Association Analysis
Les données sont préparées comme suit. L'extension doit être un panier
$ more hayes-roth-train1-1.basket
a2,b2,c3,d4,D3
a3,b2,c1,d3,D1
<snip>
>>> import Orange
>>> data = Orange.data.Table('hayes-roth-train1-1.basket')
>>> rules = Orange.associate.AssociationRulesSparseInducer(data, support=0.03, confidence=0.2, classification_rules=1, store_examples=True)
>>> print "%4s %4s %4s %4s" % ("Supp", "Conf", "Lift", "Rule")
Supp Conf Lift Rule
>>> for r in rules[:5]:
... print "%4.1f %4.1f %4.1f %s" % (r.support, r.confidence, r.lift, r)
...
0.0 0.2 3.6 b4 -> c4
0.0 0.3 3.6 c4 -> b4
0.0 0.2 7.2 c4 -> b4 a1
0.0 0.5 6.0 c4 a1 -> b4
0.0 0.2 7.2 c4 -> b4 a1 D3
Consultez le document suivant et essayez-le
Association rules and frequent itemsets Orange.data.Instance Orange.data.Value
>>> len(rules)
400
>>> rules[383]
b2 a2 -> c1
>>> rules[383].left
[], {"b2":1.000, "a2":1.000}
>>> rules[383].left.get_metas(str).keys()
['a2', 'b2']
>>> rules[383].right.get_metas(str).keys()
['c1']
>>> rules[383].confidence
0.7333333492279053
>>> rules[383].support
0.07692307978868484
>>> rules[383].n_applies_both
11.0
>>> rule = rules[383]
>>> for d in data:
... if rule.appliesBoth(d):
... print d
...
[], {"a2":1.000, "b2":1.000, "c1":1.000, "d3":1.000, "D1":1.000}
[], {"a2":1.000, "b2":1.000, "c1":1.000, "d2":1.000, "D2":1.000}
[], {"a2":1.000, "b2":1.000, "c1":1.000, "d2":1.000, "D2":1.000}
[], {"a2":1.000, "b2":1.000, "c1":1.000, "d2":1.000, "D2":1.000}
[], {"a2":1.000, "b2":1.000, "c1":1.000, "d3":1.000, "D2":1.000}
[], {"a2":1.000, "b2":1.000, "c1":1.000, "d4":1.000, "D3":1.000}
[], {"a2":1.000, "b2":1.000, "c1":1.000, "d1":1.000, "D1":1.000}
[], {"a2":1.000, "b2":1.000, "c1":1.000, "d3":1.000, "D1":1.000}
[], {"a2":1.000, "b2":1.000, "c1":1.000, "d1":1.000, "D1":1.000}
[], {"a2":1.000, "b2":1.000, "c1":1.000, "d2":1.000, "D2":1.000}
[], {"a2":1.000, "b2":1.000, "c1":1.000, "d1":1.000, "D1":1.000}
>>> rule.examples
Orange.data.Table 'table'
>>> rule.match_both
<2, 3, 5, 40, 87, 105, 111, 116, 118, 135, 137>
Recommended Posts