BasketAnalysis Deel2
In datamining is het a-priorialgoritme een algoritme dat helpt om associatieregels te leren uit een database met informatie over transacties, zoals per aankoop de gekochte producten in een supermarkt of de bezochte pagina’s op een website per sessie. Een voorbeeld van een associatieregel is: ‘in 80% van de gevallen kopen klanten die product A kopen ook product product B’.
Het algoritme helpt om associatieregels te leren door patronen te vinden in de data. Formeler gezegd, tracht het algoritme verzamelingen van transactieitems te vinden die meer dan een vooraf bepaald aantal keer voorkomen in de data. Bijvoorbeeld kan het algoritme gebruikt worden om in de dataset te zoeken naar frequente combinaties van aangekochte producten, zoals elke combinatie van producten die minstens 3 keer samen aangekocht werden.
Deel 2: Klasse Basket
Download de klasse Transaction
.
Maak geen wijzigingen aan deze gegeven klassen.
Merk op dat de klassen allemaal in de default package moeten zitten (=rechtstreeks in de ‘src’-map van het project in NetBeans).
Dit is nodig om deze later in te kunnen dienen op het Dodona platform voor feedback door middel van copy-pasten van de hele inhoud
van de klasse in het vak van de oefening op Dodona. Zorg er ook wel voor dat je ingediende code compileert, bij compilatiefouten kan
geen (zinvolle) feedback gegeven worden.
- Definieer de klasse Basket als implementatie van de interface Transaction.
- Voeg de instantievariabelen toe zoals beschreven in het bovenstaande klassendiagram.
- Definieer de constructor zoals beschreven in het bovenstaande klassendiagram. Deze initialiseert de instantievariabelen
met de overeenkomstige parameter en initialiseert de instantievariabele ‘basketItems’ als lege lijst.
- Voeg een accessormethodes toe voor instantievariabele ‘clientID’ en ‘basketID’.
- Overschrijf de methode getItems (van Transaction) die geen parameters heeft. De methode geeft een nieuwe lijst
terug met daarin de alle basketItems van het Basket object.
- Overschrijf de methode containsItem (van Transaction) die een Item object als parameter heeft. De methode geeft
‘true’ terug indien ‘basketItems’ van het Basket object het meegegeven Item bevat. ‘null’ als parameter zal altijd resulteren in
‘false’ als teruggegeven waarde.
- Overschrijf de methode containsItemSet (van Transaction) die een array van Item objecten als parameter heeft. De
methode geeft ‘true’ terug indien ‘basketItems’ van het Basket object de meegegeven Items bevat. Een lege array (lengte= 0) of ‘null’ als
parameter zal altijd resulteren in ‘false’ als teruggegeven waarde.
- Maak de statische methode parseBasketLine die een String als parameter heeft. De parameter stelt één lijn tekst
voor, afkomstig uit een bestand van weggeschreven Basket objecten. Het bestand is van het type CSV, wat betekent dat
verschillende delen gescheiden worden door middel van het ‘;’-symbool. De methode transformeert de gegeven tekst in een
Basket object, waarbij je mag veronderstellen dat de meegegeven tekst geldig is, en geeft object terug. De delen van een
meegegeven lijn tekst hebben de volgende semantische betekenis:
basketID;customerID;productID;quantity;productID;quantity;…
Twee voorbeelden:
"basket17;Fien;tropical fruit;4"
"basket0;Fons;citrus fruit;16;margarine;2;ready soups;3"
Let op: er staat geen minimum of maximum op het aantal basket items die meegegeven kunnen worden.
Hierbij nog wat uitleg over de Dodona-testen voor deze oefening:
- test00objectConcept: test of de ingediende klasse de verwachte de klasse definitie heeft (interface/abstracte klasse/klasse/enum/…).
- test01inheritance: test of de ingediende klasse de verwachte superklasse heeft en de verwachte interfaces implementeert.
- test02variables_presence: test of de ingediende klasse de verwachte instantievariabelen en statische variabelen definieert.
- test03variables_staticInitialValue: test of de statische variabelen van de klasse geinitialiseerd worden met de verwachte waarde (indien van toepassing).
- test04constructor: test of de constructor het gewenste effect heeft (indien van toepassing).
- test05methodsPresent: test of de verwachte methodes aanwezig zijn in de ingediende klasse en of de methode definities overeenkomen met de verwachte definities (= test geen effect!).
- test06accessorsMutators: test of de ingediende klasse de al dan niet verwachte accessor- en mutatormethodes definieert en of deze het verwachte effect hebben.
- test07getItems: test de getItems-methode.
- test08containsItem: test de containsItem-methode.
- test09containsItemSet: test de containsItemSet-methode.
- test10parseBasketLine: test de parseBasketLine-methode.