Apriori. Kombinacje stringów z listy.

0

Cześć,
potrzebuję pomocy przy programowaniu algorytmu Apriori w C#
Operuję na Listach List stringów. Mam już wyliczone podzbiory f ale zatrzymałem się na regułach asocjacyjnych. Rozumiem działanie jak one powstają jednak nie mogę wymyślić jak mam wygenerować dynamicznie z przykładowo Listy 3 elementowej {słowo1,słowo2,słowo3} reguły takie:
słowo1 i słowo2 => słowo3
słowo1 i słowo3 => słowo2
słowo2 i słowo3 =>słowo1.
Oczywiście potrzebuję żeby działo się to dynamicznie i w momencie gdy listy będą dwu elementowe powstaną reguły z Listy {słowo1,słowo2}
słowo1 => słowo2
słowo2 =>słowo1
a przy 4 i w górę, reguły
słowo1 i słowo2 i słowo3 => słowo4 ... itd
nakieruje mnie ktoś na jakiś przykład rozwiązania takiego problemu z generowaniem reguł albo chociaż na jakieś materiały?

0

Stwórz sobie klasę, nazwijmy ją AssociationRule, która będzie przechowywała właściwości:

  1. Listę obiektów typu string, w której znajdą się wszystkie elementy po lewej stronie reguły (nie pamiętam jak to się fachowo nazywało).
  2. Obiekt typu string, który przechowuje
  3. Mógłbyś sobie dodać jeszcze odpowiednie właściwości w klasie przechowujące informacje o ufności oraz wsparciu. Reguły asocjacyjne generuje się uwzględniając te wartości. Dzięki temu możesz sobie załadować wszystko do kolekcji i potem np. odrzucać te reguły, które mają mniejszą ufność , wsparcie. No chyba, że to robisz na etapie wczytywania reguł.

Stwórz sobie klasę, nazwijmy ją RulePrinter, która:

  1. Będzie zawierała metodę, która jako parametr przyjmuje obiekt klasy AssociationRule. Wewnątrz metody mamy pętlę foreach dla każdej listy z podpunktu 1 w poprzednim akapicie. W tej pętli dodajemy i czy tam znak przecinek za każdym stringiem oprócz ostatniego. Doklejamy => i właściwość z punktu 2 po prawej stronie. Wyrzucamy rezultat.

Stwórz sobie klasę, nazwijmy ją AssociationRuleCalculator, która:

  1. Będzie zawierała metodę zwracającą kolekcję obiektów klasy AssociationRule - w metodzie twórz obiekty klasy AssociationRule i je zwracaj. Jeżeli jak pisałem uwzględniasz wsparcie oraz ufność dla reguł asocjacyjnych na etapie przetwarzania to tutaj to uwzględnij.

Wykonaj metodę z klasy RulePrinter dla naszej kolekcji obiektów klasy AssociationRule, którą uzyskałeś z AssociationRuleCalculator.

0

W sumie to co napisałeś jest bardzo pomocne i dziękuję za tak obszerną odpowiedź z tym że to trochę nie rozwiązuje mojego problemu bo ja nie bardzo wiem jak napisać metodę która wygeneruje mi kombinacje obiektów klasy AssociationRule :(

1 użytkowników online, w tym zalogowanych: 0, gości: 1